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