centos 7
периодический стал падать сервер. постоянно пишет nginx ошибка 500
залез в логи nginx’a — а там вот это:
2018/04/10 19:20:28 [crit] 638#638: accept4() failed (23: Too many open files in system)
стопицот раз.
вот подумалось, не эта ли хрень является причиной постоянного падения сервака…
Посмотрите какой текущий лимит у вас установлен в файле
nano /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 65535 65535 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 65535 65535 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
Далее
nano /etc/security/limits.d/20-nproc.conf
заменить на
# Default limit for number of user's processes to prevent # accidental fork bombs. # See rhbz #432903 for reasoning. * soft nproc 16384 root soft nproc unlimited