LINUX.ORG.RU
решено ФорумAdmin

Инит-скрипт nginx и лимит открытых файлов

 , , , ,


0

1

В чём может быть причина:

root@host-88 ~ # service nginx reload
Error: Too many open files
? То же самое выводит, если его остановливать или запускать. Но при этом нормально и останавливается, и запускается. Непонятно, откуда эта ошибка выползает и что ему не нравится. В error_log её нет. Подозреваю что-то дистрибутивно-специфичное: Debian 8 + Proxmox 4.3, nginx установлен на физическом хосте как прокси для виртуалок/контейнеров, из его репозитория, stable-версия.

root@host-88 /etc/nginx # nginx -v
nginx version: nginx/1.12.1

root@host-88 ~ # ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 256928
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 131070
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 256928
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

root@host-88 ~ # sysctl fs.file-nr
fs.file-nr = 26112	0	6562344

root@host-88 ~ # lsof | wc -l
149451
Последнее значение слегка смущает, но lsof, похоже, показывает и значения внутри контейнеров, так что когда в одном из них начинает быковать дженкинс, и получаются дикие значения.

★★★

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

Вот это бахните.

l0stparadise ★★★★★ ()
Ответ на: комментарий от l0stparadise
nginx: worker process
Limit                     Soft Limit           Hard Limit           Units     
Max open files            1024                 4096                 files     
Currently open files: 54

nginx: worker process
Limit                     Soft Limit           Hard Limit           Units     
Max open files            1024                 4096                 files     
Currently open files: 52

nginx: worker process
Limit                     Soft Limit           Hard Limit           Units     
Max open files            1024                 4096                 files     
Currently open files: 52

nginx: worker process
Limit                     Soft Limit           Hard Limit           Units     
Max open files            1024                 4096                 files     
Currently open files: 52

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: 53

nginx: worker process
Limit                     Soft Limit           Hard Limit           Units     
Max open files            1024                 4096                 files     
Currently open files: 11

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: 8

nginx: worker process
Limit                     Soft Limit           Hard Limit           Units     
Max open files            1024                 4096                 files     
Currently open files: 10

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: 8

nginx: worker process
Limit                     Soft Limit           Hard Limit           Units     
Max open files            1024                 4096                 files     
Currently open files: 10

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: 8

nginx: cache manager process
Limit                     Soft Limit           Hard Limit           Units     
Max open files            8192                 8192                 files     
Currently open files: 23

nginx: worker process
Limit                     Soft Limit           Hard Limit           Units     
Max open files            8192                 8192                 files     
Currently open files: 31

nginx: worker process
Limit                     Soft Limit           Hard Limit           Units     
Max open files            8192                 8192                 files     
Currently open files: 31

nginx: worker process
Limit                     Soft Limit           Hard Limit           Units     
Max open files            8192                 8192                 files     
Currently open files: 29

nginx: worker process
Limit                     Soft Limit           Hard Limit           Units     
Max open files            8192                 8192                 files     
Currently open files: 28

nginx: worker process
Limit                     Soft Limit           Hard Limit           Units     
Max open files            8192                 8192                 files     
Currently open files: 28

nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
Limit                     Soft Limit           Hard Limit           Units     
Max open files            1024                 4096                 files     
Currently open files: 31

nginx: worker process
Limit                     Soft Limit           Hard Limit           Units     
Max open files            1024                 4096                 files     
Currently open files: 16

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: 14

В нескольких контейнерах он тоже запущен, где-то для php-fpm, где-то с mod_passenger.

lizard ★★★ ()
Ответ на: комментарий от lizard

Ну как видите, проблема явно не в нем, у вас самый «нагруженный» процесс - 54/1024. Видимо, что-то другое спамит свои ошибки прямо в stdout.

l0stparadise ★★★★★ ()
Ответ на: комментарий от l0stparadise

Да, на попытку рестарта других сервисов тоже выводит подобное. Буду дальше искать. Скорее всего, systemd чудит.

lizard ★★★ ()
Ответ на: комментарий от leave

У него рутовый ulimit 131070, а lsof | wc -l даёт 149451 под рутом. Здесь уже виднеется проблема. Вполне возможно, что jenkins работает под рутом, вместо отдельного пользователя со своим лимитом

grossws ()
Ответ на: комментарий от grossws

ulimit ставится при через pam-limits из limits.conf, и относится к текущему шеллу. Другими словами, ты можешь выставить пару сотен тысяч, запустить демон ручками, перелогиниться и увидеть превышение. Хотя я сомневаюсь, что это тот случай (с учетом цифры в 53 у nginx). Скорее всего, твоя догадка верна.

leave ★★★★★ ()
Ответ на: комментарий от grossws
Aug  1 15:35:37 10 systemd: inotify_init1() failed: Too many open files

Таки да, systemd в связке с LXC. Всего-то двадцать шесть контейнеров, а оно уже упёрлось в лимит. Только не открытых файлов, а inotify watcher. При этом рядом стоит другой сервер, который до сих пор на третьей версии прокмокса, и он спокойно крутит больше тридцати openvz-контейнеров без какого-либо тюнинга. Мне решительно непонятно, почему в документации прокмокса этот момент никак не отражён, хотя проблема довольно старая: https://forum.proxmox.com/threads/unable-to-create-new-inotify-object-too-man...

lizard ★★★ ()
Ответ на: комментарий от lizard

Т.е. lxc сожрал всё доступные inotify, а systemd просто не может добавить новый watcher. Радуйтесь, что у вас не upstart в той же позе, получили бы kennel panic, т.к. его pid1 полагается на inotify.

grossws ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.