request_time
Maxim Dounin
mdounin на mdounin.ru
Чт Дек 27 15:23:25 UTC 2018
Hello!
On Thu, Dec 27, 2018 at 01:35:48AM -0500, inkognito0609 wrote:
> Из чего получается request_time? Прочитав данную доку:
> https://www.nginx.com/blog/using-nginx-logging-for-application-performance-monitoring/,
> сделал для себя вывод что :
> $request_time = $upstream_connect_time + $upstream_header_time +
> $upstream_response_time+$вермя_передачи_до_клиента
Это неправильный вывод.
Во-первых, $upstream_connect_time и $upstream_header_time - это
составные части $upstream_response_time, складывать их вместе не
нужно.
Во-вторых, $request_time - это не только время общения с бэкендом
и время досылки ответа после того, как бэкенд полностью прислал
ответ, но также и время чтения запроса от бэкенда. То есть
$request_time = <время чтения запроса> + $upstream_response_time + <время досылки ответа>
Кроме того, в зависимости от конфигруации могут добавляться и
всякие другие задержки, например:
- если в конфигурации есть auth_request - то и время выполнения
auth-подзапроса надо будет добавить;
- если в конфигурации используется проксирование с переменными, то
нужно ещё добавить время резолвинга соответствующего имени.
> При увеличении трафика в логах балансера вижу следующее:
> request_time = 5.009
> upstream_connect_time=0.000
> upstream_header_time=0.008
> upstream_response_time=0.009
>
> Кейс воспроизводится на разных проектах при увеличении нагрузки (50-100ps в
> зависимости от проекта). Что происходит 5 секунд?
Исходя из цифры в 5 секунд - подозреваю, что речь про proxy_pass с
переменными и теряющиеся пакеты к DNS-серверу.
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru