我在CentOS 7上运行Squid 3.3(EPEL),最近我在我的cache.log
收到以下错误信息
WARNING! Your cache is running out of filedescriptors
我有点困惑,因为我似乎有足够的描述符可用:
squidclient mgr:info | grep 'file descri' Maximum number of file descriptors: 16384 Available number of file descriptors: 16326 Reserved number of file descriptors: 100
鱿鱼也编制了这个标志:
--with-filedescriptors=16384
鱿鱼确认这些实际上在启动时可用:
2015/08/18 21:11:45 kid1| With 16384 file descriptors available
但是,这个错误不断发生。 在这个错误logging后不久, squid
进程似乎也达到了100%的CPU或使用几乎所有的系统内存超过90%,导致互联网速度下降到爬行或只是无限期地挂起。 杀死进程并重新启动解决它,但最终会再次发生。
我总共有8 GB的可用内存,这些是我的squid.conf
中的内存/caching相关参数
cache_dir ufs /var/spool/squid 16000 16 256 cache_mem 1024 MB
我还使用ufdbguard
和其他辅助插件进行Kerberos和NTLM身份validation。
有什么build议?
文件描述符的数量在systemd单元文件中设置。 默认情况下,这是16384,你可以在/usr/lib/systemd/system/squid.service
看到。
要覆盖这个,创build一个本地覆盖/etc/systemd/system/squid.service
,它改变了文件描述符的数量。 它应该看起来像这样:
.include /usr/lib/systemd/system/squid.service [Service] LimitNOFILE=65536
不要编辑默认文件/usr/lib/systemd/system/squid.service
,因为每当程序包更新时它都将被恢复。 这就是为什么我们把它放在本地文件来覆盖默认值。
在创build这个文件之后,告诉systemd:
systemctl daemon-reload
然后重新启动鱿鱼。
systemctl restart squid