В частности, следвие для nginx - в логе
socket() failed (24: Too many open files)
Проверяем параметры (в дебиан 5 работает, в 6 как-то не хотело)
for pid in `pidof nginx`; do echo "$(< /proc/$pid/cmdline)"; egrep 'files|Limit' /proc/$pid/limits; echo "Currently open files: $(ls -1 /proc/$pid/fd | wc -l)"; echo; done
Исправить «too many open files» в nginx
for pid in `pidof nginx`; do echo "$(< /proc/$pid/cmdline)"; egrep 'files|Limit' /proc/$pid/limits; echo "Currently open files: $(ls -1 /proc/$pid/fd | wc -l)"; echo; done
Исправить «too many open files» в nginx
Лечим.
1. в /etc/security/limits.conf нужно добавить такие строки:
* soft nofile 16384
* hard nofile 16384
2. в текущей консоли от рута сделать
ulimit -n 16384
3. в /etc/sysctl.conf добавляем
fs.file-max = 16384
(проверка состояния через cat /proc/sys/fs/file-nr )
4. в nginx.conf прописать новое значение worker_connections, равное (16384 поделить на worker_processes)
+ проверять логи на наличие строк
[alert] 7528#0: 1024 worker_connections are not enough
вообще, как показывает практика, для более-менее нагруженного сайта worker_connections должен быть не менее 4096.
[alert] 7528#0: 1024 worker_connections are not enough
вообще, как показывает практика, для более-менее нагруженного сайта worker_connections должен быть не менее 4096.
4.5 у nginx есть опция worker_rlimit_nofile 16384, какую-то часть из перечисленного оно заменяет, но подробнее надо смотреть в исходниках/спрашивать у разработчиков.
Теперь в этой же консоли делаем
service nginx restart
должно заработать.
Линки
Комментариев нет:
Отправить комментарий