Re: Пролагивание коннектов при проверке синтаксиса
Maxim Dounin
mdounin на mdounin.ru
Вт Ноя 13 18:58:22 UTC 2018
Hello!
On Tue, Nov 13, 2018 at 08:23:03PM +0300, kpoxa wrote:
> Добрый день.
>
> Есть сервер (Dual Xeon E5620, средняя нагрузка проца в праймтайм 20%) с
> nginx в главной и по сути единственной роли, задача которого проксирование
> и больше ничего.
>
> В конфиге 101 listen на уникальные ip:port, nginx без сторонних модулей.
> 1.15.4, но думаю что версия тут не при чем.
> Debian Linux Jessy с ядром 3.16.
>
> В среднем одновременных коннектов открыто 150-200 тыс. 70% из них по 443
> порту.
> в логе собирается время отвремя апстрима и было замечено, то раз в 30
> секунд оно пролагивает у части коннектов на лишнюю секунду, т.е. обычно
> 0.01, а тут 1.01 сек.
> Выяснилось что раз в 30 секунд срабатывает проверка конфига заббиксом, т.е.
> вызывается
> nginx -t
>
> Ручной вызов nginx -t привел к появлению в логах лагающих запросов в это
> время, выключение аббикс агента такие запросы убирает вообще.
> команда
> time nginx -t
> nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
> nginx: configuration file /etc/nginx/nginx.conf test is successful
> real 0m0.601s
> user 0m0.044s
> sys 0m0.432s
> показывает 0.4 с лишним секунды в режиме ядра.
> а попытка разобраться чем же занято ядра выдало ниже следующее
>
> strace -Ttt nginx -t 2>&1 | grep bind
>
> т.е. bind на 443 порты занимает 15 тысячных секунды, против стотысячных
> долей у прочих биндов.
>
> Есть ли идеи, как решить проблему пролагиваний при проверке конфига?
> Вариант убрать её из заббикса считаю академически неправильным, просьба его
> не рассматривать.
>
> reuseport не используется, может он помочь?
Из общих соображений я бы скорее предположил, что reuseport в
данной ситуации сделает хуже, а не лучше. Потому что сокетов
станет только больше, а bind() должен проверить конфликты с
открытыми сокетами.
Очевидное решение - добавить listen на *:443, тогда listen-сокет
будет один, и проблема исчезнет.
Впрочем, запускать "nginx -t" раз в 30 секунд - это, скажем так,
очень странное решение, если не сказать грубее. Особенно с учётом
того, что только парсинг конфигурации вполне может занимать
несколько минут.
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru