nginx_error._too_many_open_files
Это старая версия документа!
Nginx Error. Too many open files
Описание
В логе ошибок Nginx:
...socket() failed (24: Too many open files) while connecting to upstream..."
Диагностика
Список файловых дестрипторов, созданных процессом, можно увидеть в каталоге
/proc/$pid/fd
где
- $pid - ID процесса
Красивый вывод статистики по процессам 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
nginx: worker process Limit Soft Limit Hard Limit Units Max open files 131072 131072 files Currently open files: 25 nginx: worker process Limit Soft Limit Hard Limit Units Max open files 131072 131072 files Currently open files: 29 nginx: worker process Limit Soft Limit Hard Limit Units Max open files 131072 131072 files Currently open files: 29 nginx: worker process Limit Soft Limit Hard Limit Units Max open files 131072 131072 files Currently open files: 55 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf Limit Soft Limit Hard Limit Units Max open files 1024 4096 files Currently open files: 23
Решение
Если превышение лимита на количество открытых дескрипторов вызвано естественными факторами и его необходимо увеличить (а не искать причину), то есть два способа:
- ограничение на количество открытых файловых дискрипторов для воркеров Nginx можно задавать через параметр worker_rlimit_nofile :
vim /etc/nginx/nginx.conf
worker_rlimit_nofile 131072; events { ... } http { ... }
- изменение ограничения со стороны операционной системы:
vim /etc/security/limits.conf
добавляем
* soft nofile 131072 * hard nofile 131072
и выполняем
ulimit -n 131072
Источники
nginx_error._too_many_open_files.1478378343.txt.gz · Последнее изменение: 2016/11/05 00:00 (внешнее изменение)
