База знаний

Linux увеличить количество одновременно открытых файлов

  • 3

Количество файловых дескрипторов в системе ограничивает количество одновременно открытых файлов. В большинстве linux дистрибутивов это значение равно 1024 на одного юзера. В большинстве случаев этого хватает, но бывают и исключения. Обычно это высоко нагруженные серверы прокси или баз данных.

Проверить существующие в операционке лимиты вы можете так:
ulimit -Hn
и
ulimit -Sn

Если ваш Squid вдруг повис и заругался в лог примерно так
WARNING! Your cache is running out of filedescriptors
то это повод задуматься об увеличении ограничения в 1024 дескриптора.

MySQL в таком случае говорит
OS error code 24: Too many open files


Количество дескрипторов выставляется в следующих конфигурационных файлах:

/etc/security/limits.conf
Можно выставить лимиты для отдельного юзера
proxy soft nofile 4096
proxy hard nofile 10240

В строке по порядку через пробел идут следующие значения: [юзер] [тип ограничения] Nofile [число]

Можно увеличить сразу для всех
* - nofile 4096

Так же идём в файл /etc/sysctl.conf и прописываем в него такую строчку
fs.file-max = 100000

Сохраняемся и перелогиниваемся, возможно нужно будет и перезагрузиться.

Теперь можно проверить как поживает squid.
squidclient mgr:info | grep 'file descri'

В общем виде команда выглядит так
squidclient -p {порт прокси} -u {юзер прокси} -w ‘{пароль}’ mgr:info | grep ‘file descri’

Как вариант проверьте значение дочерних процессов в конфиге squid и размер кеша. Возможно в вашем случае вариантом будет не много пожертвовать производительностью в угоду стабильности.

В зависимости от версии squid в его конфигурации так же есть параметры, отвечающие за количество дескрипторов, это max_filedesc и SQUID_MAXFD.


Помог ли вам данный ответ?