Hello! On Thu, Jun 15, 2017 at 09:38:08PM +0300, Алексанр Платонов wrote:
> > При connect-таймауте в 300 миллисекунд любой потерянный пакет > > будет приводить к таймауту. А какой-то процент потерянных пакетов - это > > нормальное состояние любой сети, так что нет причин удивляться > > тому, что часть соединений при таких настройках таймаутится. > > Да, какая-то часть таймаутиться будет, это нормально. Я ожидал другого > времени в логе +- 300мс. > Если таймаут поднять и умрет ДЦ, то 1/3 запросов в api будет с сильно > увеличенным временем ответа, а это приведет к тормозам всего сервиса. > Локально обрабатывать трафик - железо разное. > Завтра подниму до 700, посмотрим на результат. Время в логе - следствие ровно того же самого, время обновляется единожды за итерацию. Если таймаут 300 миллисекунд, а время 677 - значит, в течении "лишних" 377 миллисекунд nginx был занят обработкой других запросов в рамках одной итерации цикла обработки событий. > > Кроме того, следует понимать, что время внутри nginx'а обновляется > > единожды за итерацию цикла обработки событий. В результате если > > обработка какого-то события занимает существенное время и/или > > таких событий много, это может сказаться как на latency операций в > > целом, так и на точности работы отдельных таймаутов. Поскольку > > 300 миллисекунд - время достаточно малое, это может быть заметно, > > если сервер сильно нагружен и/или где-то блокируется. > > Сейчас ~ 150 rps на хост, машина не нагружена более чем на 40%. ~ в каких > временных пределах может быть погрешность? Вопрос в первую очередь в том, на сколько nginx блокируется в рамках обработки запросов. Это может зависить от многих факторов, обычно - наболее критичны блокировки на дисках, ибо по умолчанию дисковые операции блокируются, а типичное время выполнения любой операции на обычных дисках - порядка 10 миллисекунд даже практически без нагрузки (ибо seek). За какое время отрабатывает одна итерация цикла обработки соединений - можно грубо оценить по debug log'у, смотреть строки "timer delta". Там выводится время с начала предыдущей итерации, для нагруженного сервера - это фактически время выполнения всей предыдущей итерации. -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
