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