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