Squid 在 CentOS 7 上耗尽文件描述符

Squid 在 CentOS 7 上耗尽文件描述符

我在 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

Squid 也用这个标志进行编译:

--with-filedescriptors=16384

Squid 确认这些在启动时确实可用:

2015/08/18 21:11:45 kid1| With 16384 file descriptors available

但是这个错误一直出现。记录此错误后不久,该squid进程似乎也达到了 100% CPU 或使用了几乎所有的系统内存(超过 90%),导致互联网速度下降或无限期挂起。终止进程并重新启动可以解决此问题,但最终它会再次发生。

我总共有 8 GB 的可用内存,这些是我的squid.conf

cache_dir ufs /var/spool/squid 16000 16 256
cache_mem 1024 MB

我还在使用ufdbguardKerberos 和 NTLM 身份验证的其他辅助插件。

有什么建议吗?

答案1

文件描述符的数量在 systemd 单元文件中设置。默认情况下,它是 16384,如中所示/usr/lib/systemd/system/squid.service

要覆盖此设置,请创建一个本地覆盖/etc/systemd/system/squid.service,以更改文件描述符的数量。它应该看起来像这样:

.include /usr/lib/systemd/system/squid.service

[Service]
LimitNOFILE=65536

不要编辑默认文件/usr/lib/systemd/system/squid.service,因为每次更新包时都会恢复默认文件。这就是为什么我们将其放在本地文件中以覆盖默认文件的原因。

创建此文件后,将其告知 systemd:

systemctl daemon-reload

然后重新启动 squid。

systemctl restart squid

相关内容