NGINX: ошибка too many open files
Появились в логах ошибки:
[root ~]tail -f /etc/nginx/logs/error_log 2015/11/15 16:09:48 [crit] 18676#0: accept() failed (24: Too many open files) 2015/11/15 16:09:48 [crit] 18676#0: accept() failed (24: Too many open files) 2015/11/15 16:09:48 [crit] 18676#0: accept() failed (24: Too many open files) 2015/11/15 16:09:48 [crit] 18676#0: accept() failed (24: Too many open files) 2015/11/15 16:09:48 [crit] 18676#0: accept() failed (24: Too many open files)
Такие ошибки возникают на нагруженных веб-серверах, когда веб-сервер достигает предела количества открытых десткрипторов.
Исправим ситуацию, выполнив 2 простых шага:
Увеличим worker_rlimit_nofile - директива указывает сколько файловых дескрипторов будет использовать Nginx. На каждое соединение выделяется по два дексриптора: один для соединения с клиентом, а второй — для открытия файла. Поэтому worker_rlimit_nofile должно равняться удвоенному значению MaxClients. Значение MaxClients можно узнать и отредактировать с помощью команд:
ulimit -n ulimit -n 2048
worker_rlimit_nofile 4096;
Увеличим лимит открытых файлов на уровне системы. В файле /etc/sysctl.conf добавим:
fs.file-max = 400000
Применим изменения:
sysctl -p
Комментарии (0)