admin Site Admin
Зарегистрирован: 11.09.2008 Сообщения: 546
|
Добавлено: Ср Авг 27, 2014 10:42 pm Заголовок сообщения: (24)Too many open files: |
|
|
Описание ситуации
Как только на веб-сервер возрастает нагрузка, он перестаёт работать. В /var/log/httpd/error.log есть сообщения вида:
(24)Too many open files:
Возможное решение
Первым делом необходимо убедиться, что в системе установлено необходимое количество открытых файлов:
sysctl -a|grep file
fs.file-max = 800826
fs.file-nr = 9728 0 800826
Возможное решение
Первым делом необходимо убедиться, что в системе установлено необходимое количество открытых файлов:
sysctl -a|grep file
fs.file-max = 800826
fs.file-nr = 9728 0 800826
По этой записи видно, что максимальное число открытых файлов установлено в 800826, а открыто только 9728. Современные дистрибутивы умеют динамически управлять значением fs.file-max и в большинстве случаев вам не нужно будет изменять это значение. Однако, устаревшие версии могут этого не уметь! Если вы увидите, что в fs.file-nr левое и правое значение приблизительно одинаковы, вам необходимо увеличить значение fs.file-max командой:
sysctl fs.file-max=значение
Как видим, теперь всё в порядке - системе разрешено открывать файлов намного больше, чем открыто в текущий момент. Однако, это ещё не всё.
Вторым делом, добавляем в /etc/sysconfig/httpd (а если у вас самосборный apache, то в скрипт запуска apache) строчку:
ulimit -n 65535
Цифра 65535 - это не догма. Надо больше - ставьте больше, надо меньше, ставьте меньше.
http://linuxshare.ru/knowledge/apache/q001.html |
|