Re: Nginx reload, выедает CPU

Serge Negodyuck serg at petrovich.kiev.ua
Tue Aug 27 17:27:47 UTC 2013


27 августа 2013 г., 18:47 пользователь Maxim Dounin
<mdounin at mdounin.ru> написал:
> Hello!
>
>
> Судя по backtrace'у, nginx честно ждёт новых собитий в ядре.
> Возможно, "кушать процессор" - это побочный эффект от нехватки
> ресурсов из-за большого количества завершающихся процессов?
Штатно, 4 ядра, гипертрединг выключен, 8 процессов nginx. Нагрузка на
CPU до 30%  (суммарно по всем 8 процессов, т.е до 4% каждый).

Как только даешь сигнал HUP, воркеров становится 16. 8 умирающих
процессов в течении 10 секунд плавно набирают CPU usage до максимума
ресурсов
Держатся в таком состоянии столь угодно долго - 3 часа точно могут висеть.

Видео для наглядности http://ascii.io/a/5172

>
> Имеет смысл либо походить по коду в gdb, либо посмотреть на
> картину с помощью ktrace + kdump -T.  Ну и на банальный top тоже
> имеет смысл посмотреть внимательно.

Ок, попробую нарыть больше информации для диагностики. И воспроизвести
в минимальной конфигурации.

>
> Note: рабочие процессы завершаются только тогда, когда закончена
> обработка всех запросов.  Соответственно долгоживующие запросы a
> la проксирование websocket'ов - могут долго препятствовать
> завершению рабочих процессов, тем самым приводя к их накоплению.

Да, вполне устраивает что старые процессы могут жить  еще сутки. Но
при этом, по идее, старые воркеры должны со временем потреблять все
меньше и меньше процессора. Но, не наоборот.


Подробная информация о списке рассылки nginx-ru