Сокеты в основном в stream, поэтому их агрегировать не получится, как я понимаю, с http то проблем нет.
Парзинг конфига занимает около секунды, а вот знание того, что получился невалидный конфиг очень помогает избежать простоев. Основная проблема в долгом syscall bind, который долгий при определенных обстоятельствах. И почему он долгий не понятно. в strace видно время вызовов и видно, что для бинда по 443 порту оно в сотни раз дольше, чем для других портов. вт, 13 нояб. 2018 г. в 21:58, Maxim Dounin <mdou...@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@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru
_______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru