Squid代理警告!您的缓存用尽了Filedescriptors错误和解决方案

时间:2020-01-09 10:43:44  来源:igfitidea点击:

我Squid代理服务器在cache.log文件中看到以下错误消息:

警告!您的缓存用尽了文件描述符
WARNING! Your cache is running out of filedescriptors

我是否需要过滤代理服务器请求以避免此问题?
如何在CentOS/Fedora/RHEL/Debian Linux下解决此问题?
如果在/var/log/squid/cache.log文件中看到此消息,则表明Squid代理服务器用尽了文件描述符,无法处理客户端计算机发送的额外请求。

找出当前文件描述符限制

登录到您的Squid代理服务器,然后在shell提示符下执行以下命令:

# squidclient mgr:info | grep 'file descri'
# squidclient -p {port} -u {proxy-user} -w '{proxy-password}' mgr:info | grep 'file descri'
# squidclient -p 8080 -u admin -w 'secretePassword' mgr:info | grep 'file descri'

输出示例:

Maximum number of file descriptors:   1024
        Available number of file descriptors: 1008
        Reserved number of file descriptors:   100

乌贼增加最大文件描述符

首先,更新/etc/security/limits.conf文件:

# vi /etc/security/limits.conf

追加以下行以将电流限制从1024增加到4096:

* - nofile 4096

保存并关闭文件。您必须重新登录以检查新的限制:ulimit -a | grep打开文件示例输出:

open files                      (-n) 4096

接下来,您需要通过根据Linux发行版修改squid代理服务器配置来设置打开文件描述符的最大数量。

在RHEL/Red Hat/CentOS/Fedora Linux下设置max_filedesc

停止Squid,因为重新配置命令不考虑此值的更改。
仅当没有任何活动的Squid过程时才应更改此值。

# service squid stop

打开/etc/squid/squid.conf文件

# vi /etc/squid/squid.conf

追加/添加/修改max_filedesc指令:

max_filedesc 4096

保存并关闭文件。
启动Squid代理服务器:

# service squid start

现在再次运行squidclient命令或者检查日志文件中是否有消息:

# squidclient mgr:info

在Ubuntu/Debian Linux下设置max_filedesc

首先,停止Squid代理服务器,执行:

# /etc/init.d/squid stop

或者

$ sudo /etc/init.d/squid stop

打开/etc/default/squid设置最大要使用的文件描述符数量。
您可以在繁忙的高速缓存上将其增加到最多(当前)4096个文件描述符。
默认值为1024。

$ sudo vi /etc/default/squid

或者

# vi /etc/default/squid

现在设置SQUID_MAXFD:

SQUID_MAXFD=4096

保存并关闭文件。
启动Squid代理服务器:

$ sudo /etc/init.d/squid start

验证它是否具有新的限制:

# squidclient mgr:info | grep 'file descri'