Ubuntu 上的 Squid 耗尽文件描述符

Urk*_*koM 5 ubuntu squid ulimit max-file-descriptors ubuntu-10.04

我在 Ubuntu 10.04 64 位上运行 Squid 2.7。我遇到了 Squid 耗尽文件描述符的问题,/var/log/squid/cache.log 中显示以下错误:

警告!您的缓存已用完文件描述符

我检查过:

鱿鱼客户端经理:信息 | grep '文件描述'

它显示我只有 1024 个可用的文件描述符。

我更改了 /etc/security/limits.conf,在末尾添加了以下内容:

* soft nofile 32768
* hard nofile 32768
proxy           soft    nofile          32768
proxy           hard    nofile          32768
Run Code Online (Sandbox Code Playgroud)

将其添加到 /etc/squid/squid.conf 中:

max_filedescriptors 32768
Run Code Online (Sandbox Code Playgroud)

还更改了/etc/default/squid:

SQUID_MAXFD=32768
Run Code Online (Sandbox Code Playgroud)

什么都没有解决。最后我编辑/etc/init.d/squid添加“ulimit -n 32768”:

#!/bin/sh -e
# upstart-job
#
# Symlink target for initscripts that have been converted to Upstart.

set -e
ulimit -n 32768
<... snipped  ...>
Run Code Online (Sandbox Code Playgroud)

成功了!:)

我必须在实时生产 Squid 服务器极其缓慢的压力下完成这一切,所以我确信这不是正确的方法。

但正确的做法是什么?

Kha*_*led 0

我以前也遇到过同样的问题。我无法增加 quid 文件描述符的数量。

除了您所做的之外,我还使用以下配置选项配置了鱿鱼:

./configure --prefix=/usr/local/squid --enable-start-stop-daemon --with-filedescriptors=65536 --enable-storeio=ufs,aufs --with-aufs-threads=10
Run Code Online (Sandbox Code Playgroud)

案例的重要部分是:

--with-filedescriptors=65536
Run Code Online (Sandbox Code Playgroud)

执行此操作并重新启动鱿鱼后,我得到了文件描述符的最大值:65536。

当然,这需要从源代码而不是命令安装squid:

apt-get install squid
Run Code Online (Sandbox Code Playgroud)