Re: Nginx reload, выедает CPU
Maxim Dounin
mdounin at mdounin.ru
Tue Aug 27 15:47:30 UTC 2013
Hello!
On Tue, Aug 27, 2013 at 05:35:22PM +0300, Serge Negodyuck wrote:
> Как только я посылаю nginx сигнал HUP (или nginx -s reload), процессы
> в состоянии "nginx: worker process is shutting down (nginx)" начинают
> кушать весь доступный процессор.
>
> Если подсоединиться к такому процессу отладчиком:
> (gdb) bt
> #0 0x0000000801656d5c in kevent () from /lib/libc.so.7
> #1 0x00000000004370c0 in ngx_kqueue_process_events (cycle=0x801cf5050,
> timer=18446744073709551615, flags=0) at
> src/event/modules/ngx_kqueue_module.c:537
Судя по backtrace'у, nginx честно ждёт новых собитий в ядре.
Возможно, "кушать процессор" - это побочный эффект от нехватки
ресурсов из-за большого количества завершающихся процессов?
Имеет смысл либо походить по коду в gdb, либо посмотреть на
картину с помощью ktrace + kdump -T. Ну и на банальный top тоже
имеет смысл посмотреть внимательно.
Note: рабочие процессы завершаются только тогда, когда закончена
обработка всех запросов. Соответственно долгоживующие запросы a
la проксирование websocket'ов - могут долго препятствовать
завершению рабочих процессов, тем самым приводя к их накоплению.
--
Maxim Dounin
http://nginx.org/en/donation.html
Подробная информация о списке рассылки nginx-ru