upstream_response_time larger than request_time
Maxim Dounin
mdounin на mdounin.ru
Вт Июн 4 16:49:02 UTC 2019
Hello!
On Tue, Jun 04, 2019 at 12:02:47PM -0400, kron wrote:
> Доброго дня.
> Наблюдаю странную картину в логах. Логируется две переменных - request_time
> и upstream_response_time.
> Судя по документации логично предположить, что request_time будет всегда
> либо больше, либо равной upstream_response_time, но по факту оказалось, что
> upstream_response_time хоть и не значительно, но бывает больше чем
> request_time. Хотелось бы понять в каких случаях такое возможно?
>
> Пример таймингов:
> request_time upstream_response_time method
> 5.954 5.956 GET
> 5.421 5.424 GET
> 30.576 30.577 GET
> 2.302 2.304 GET
> 2.298 2.300 GET
> 1.923 1.924 GET
> 1.898 1.900 GET
> 1.802 1.804 GET
> 1.774 1.776 GET
> 1.683 1.684 GET
>
> версия nginx - 1.15.5
Это связано с тем, что сейчас на Линуксе $upstream_response_time
считается через clock_gettime(CLOCK_MONOTONIC_COARSE), и при
типичных значениях CONFIG_HZ=250 оно может отставать на время до 4
миллисекунд. В то же время время для расчёта $request_time
используется не монотонное время, а результат gettimeofday(), то
есть время по настенным часам. Так что в некоторых случаях
$upstream_response_time может быть незначительно больше
$request_time.
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru