ошибка 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

 

 

Понравилась статья, расскажи о ней друзьям, нажми кнопку!