Re: Пролагивание коннектов при проверке синтаксиса

kpoxa kpoxa на kpoxa.net
Ср Ноя 14 08:45:03 UTC 2018


Сокеты в основном в stream, поэтому их агрегировать не получится, как я
понимаю, с  http то проблем нет.

Парзинг конфига занимает около секунды, а вот знание того, что получился
невалидный конфиг очень помогает избежать простоев.

Основная проблема в долгом syscall bind, который долгий при определенных
обстоятельствах. И почему он долгий не понятно.
в strace видно время вызовов и видно, что для бинда по 443 порту оно в
сотни раз дольше, чем для других портов.

вт, 13 нояб. 2018 г. в 21:58, Maxim Dounin <mdounin at mdounin.ru>:

> 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 mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20181114/b4ff8cd1/attachment-0001.html>


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