ошибка socket () failed (24: Too many open files)
При возникновении ошибка socket () failed (24: Too many open files)
Причина в лимитах. По умолчанию на процесс выдается возможность открыть 1024 файла. посмотрим текущие лимиты.
#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 1024 4096 files Currently open files: 1009 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: 16
вносим изменения в nginx.conf
#mcedit /etc/nginx/nginx.conf
добавляем директиву
#worker_rlimit_nofile 8192;
и перезагружаем nginx
#service nginx restart
посмотрим лимиты после вненсения изменений
nginx: worker process Limit Soft Limit Hard Limit Units Max open files 8192 8192 files Currently open files: 1180 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: 18
В консоли запустим
#ulimit -n 16384
#mcedit /etc/security/limits.conf
* soft nofile 16384
* hard nofile 16384