У Squid заканчиваются файловые дескрипторы на CentOS 7

Я использую Squid 3.3 (EPEL) в CentOS 7, и недавно у меня появилось следующее сообщение об ошибке 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% ЦП или использует почти всю системную память более чем на 90%, в результате чего скорость интернета падает или просто зависает на неопределенное время. Завершение процесса и перезапуск решает его, но в конечном итоге это произойдет снова.

У меня доступно 8 ГБ памяти, это параметры, связанные с памятью / кешем в моем squid.conf

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

Я также использую ufdbguard и дополнительные вспомогательные плагины для аутентификации Kerberos и NTLM.

Любой совет?

1 ответ

Решение

Количество файловых дескрипторов задается в файле системного модуля. По умолчанию это 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
Другие вопросы по тегам