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