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