Re: NGINX некоторое время не принимает запросы после выполнения reload

Maxim Dounin mdounin на mdounin.ru
Пн Июл 4 15:50:28 UTC 2016


Hello!

On Mon, Jul 04, 2016 at 06:14:00PM +0300, Дмитрий Ансимов wrote:

> Задавал вопрос тут <https://toster.ru/q/330257>, но опишу суть проблемы и
> симптомы:
> 
> Во время релоада конфига nginx (4 ядра, 4Gb, выступает в роли reverse
> proxy) временно перестает отвечать на запросы, включая и те, что приходят
> на localhost (zabbix рапортует о недоступности). RPS при этом находится на
> уровне 1600-1800, netstat ничего, на мой взгляд, необычного, не показывает.
> dmesg и error.log о проблемах не сообщают.

При обновлении конфигурации запускаются новые рабочии процессы, 
в то время как старые - могут ещё долго оставаться в памяти, 
потребляя ресурсы (пока все ранее стартовавшие запросы не будут 
завершены).

Типичная ошибка - сконфигурировать сервер так, чтобы при 
нормальной работе вся память оказывалась распределена между 
процессами, в том числе - отдана nginx'у под буфера и прочие 
нужды.  В результате при обновлении конфигурации потребление 
памяти nginx'ом возрастает практически в два раза, и в отсутствии 
свободной памяти система уходит в swap, что для нагруженного 
сервера фактически равносильно временной остановке.

Убедиться, это ли происходит у вас, или надо искать что-то менее 
очевидно, проще всего с помощью запущенного top'а.  Во время 
обновления будет хорошо видно, кончается ли память.

-- 
Maxim Dounin
http://nginx.org/



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