Nginx, ошибка accept() failed (24: Too many open files)

link

Для одного хостинга картинок арендован выделенный сервер. На нем LAMP с nginx-фронтендом.
В один прекрасный день Nginx начинает периодически выдавать ошибку 500 при заходе на страницы.

В логах что-то похожее на

Цитата: 
[alert] 8668#0: accept() failed (24: Too many open files)


Это значит, превышен лимит количества одновременно открытых файлов. 

Решаем:
В конец файла /etc/security/limits.conf нужно добавить такие строки:

Цитата: 
* soft nofile 16384
* hard nofile 16384



В текущей консоли от рута (от судо не пашет) сделать

Цитата: 
ulimit -n 16384


Хотя это необязательно, если есть возможность перезагрузить сервер.

В /etc/nginx/nginx.conf прописать новое значение worker_connections, равное 16384 поделить на значение worker_processes.

Если не делали ulimit -n 16384, нужно выполнить перезагрузку, после чего проблема отступит.

1) Читаем логи. (Если пустые чиним)
2) Если после починки видна в логах ошибка accept() failed (24: Too many open files)
В конфиг nginx прописвыем(к примеру):

worker_processes 2;

worker_rlimit_nofile 16384;

events {
worker_connections 8192;
}


Исходя из статьи:

В /etc/nginx/nginx.conf прописать новое значение worker_connections, равное 16384 поделить на значение worker_processes.