Nginx accept() failed (24: Too many open files) while accepting new connection
Ошибка ниже является типичной для новой установки Nginx для занятых веб-сайта. Nginx видимо попадает пользователь ресурса, а также конфигурация ограничения:
2010/10/30 19:33:23 [alert] 5554#0: accept() failed (24: Too many open files) while accepting new connection on 0.0.0.0:80
Это означает, что Nginx достигли навязанного предела (читай: искусственное) на количество файлов, он может открыть одновременно. Без промедления, вот как исправить эту ошибку.
Исправление прост и состоит из двух линий стоит изменений. Первое изменение должно быть сделано в запуске сценария Nginx (/etc/init.d/nginx). Добавьте следующую строку в верхнем правом углу после того, как интерпретатор сценариев командной оболочки место (притон):
ulimit -n 65535
Затем откройте файл конфигурации Nginx (/etc/nginx/nginx.conf) и следующую строку после «worker_processes» строке ввода
worker_rlimit_nofile 20480;
После того как изменения сделаны, запустить Nginx что-нибудь вкусненькое, чтобы убедиться, что нет ошибок, были введены:
# nginx -t 2010/11/01 17:07:46 [info] 9520#0: the configuration file /etc/nginx/nginx.conf syntax is ok 2010/11/01 17:07:46 [info] 9520#0: the configuration file /etc/nginx/nginx.conf was tested successfully
и перезагрузите Nginx
/etc/init.d/nginx restart
Это все! Мы надеемся, что это было полезно.
Просмотров: 1269
Вы пишете «Первое изменение должно быть сделано в запуске сценария Nginx»
Скажите пожалуйста, где найти этот запуск сценария?
В файле /etc/nginx/nginx.conf
Статья старая и была плохо переведена на с английского на русский
то есть
ulimit -n 65535
прописываем в том же файле, что и
worker_rlimit_nofile 20480;
а именно в nginx.conf ?
ulimit -n 65535
Скорее уже не актуально. И эту команду нужно выполнять в консоли.
Достаточно прописать worker_rlimit_nofile 20480;
в файле nginx.conf
Какая у вас ОС?
centos 7
периодический стал падать сервер. постоянно пишет nginx ошибка 500
залез в логи nginx’a — а там вот это:
2018/04/10 19:20:28 [crit] 638#638: accept4() failed (23: Too many open files in system)
стопицот раз.
вот подумалось, не эта ли хрень является причиной постоянного падения сервака…
Посмотрите какой текущий лимит у вас установлен в файле
/etc/systemd/system/nginx.service.d/nofile.conf
Если такой лимит:
[Service]
LimitNOFILE=16384
То нужно увеличить его до:
[Service]
LimitNOFILE=65535
И за тем перезапустите nginx
systemctl daemon-reload
systemctl restart nginx
ага, увеличил.
Пока вроде все работает, надеюсь уж, что именно это было причиной траблов.
Спасибо большое!
Проверьте увеличился ли размер.
ps axf | grep nginx
В этом списке ищем nginx: master process:
3410 pts/0 S+ 0:00 | _ grep —color=auto nginx
3826 ? Ss 0:38 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
У нас это процесс по id 3826
cat /proc/3826/limits
Получаем вывод Max open files 16384 16384 files:
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 203668 203668 processes
Max open files 16384 16384 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 203668 203668 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
Вроде применилось: https://uploads.disquscdn.com/images/2ff552590c9e5bf05487728c0f300d62ff2f44f0cc6e3585031155e2df946234.png
Да изменилось.
Если будут еще вопросы пишите помогу 😉
я решил открыть сразу много сайтов с этого сервера. и посыпалось 500 Internal Server Error
nginx/1.12.2
Я как то могу Вам написать лично?