Рейтинг:0

Is rate limiting delay included in nginx $request_time?

флаг cn

If requests are delayed by nginx rate limiting (rate limit exceeded, but within burst rate), is this delay included in the nginx $request_time total?

The nginx docs state that $request_time is "time elapsed since the first bytes were read from the client"

If a request is delayed, is that before or after request bytes are read from the client? I assume after, since rate limiting can be based on request headers, etc.

Is there a way to separate total request time and time spent specifically on sending/receiving network communication to/from the client?

Note: I am aware of $upstream_response_time, and am logging that. I specifically am concerned with differentiating specific operations within nginx (caching, rate limiting, etc), and client-side network communications.

Рейтинг:0
флаг cn

Итак, в моем тестировании nginx $request_time Ведение журнала делает отражать задержку из-за ограничения скорости.

Клиент:

wrk --timeout 20s -d 20 -t 79 -c 80 https://zapazoid.vistashare.net/Static/jquery.jnotify-1.1.min.js

Конфигурация:

без задержки удалено из статического ограничения скорости, и ограничение скорости до 1р/с, пакет установлен на 80р/с.

Результаты теста:

➤ wrk --timeout 20s -d 20 -t 79 -c 80 https://zapazoid.vistashare.net/Static/jquery.jnotify-1.1.min.js
Запуск 20-секундного теста @ https://zapazoid.vistashare.net/Static/jquery.jnotify-1.1.min.js
  79 потоков и 80 соединений
  Статистика темы Ср. ст. отклонение Макс. +/- Ст. отклонение
    Задержка 9,97 с 5,97 с 19,93 с 56,10 %
    Запрос/сек 0,27 1,57 10,00 97,56%
  41 запрос за 20,10 с, чтение 140,14 КБ
Запросов/сек: 2,04
Передача/сек: 6,97 КБ

Журналы Nginx показали, что запросы задерживаются:

29.11.2021 15:40:23 [предупредить] 2608#2608: *355 отложенный запрос, превышение: 78.992, по зоне "static-corp", клиент: 10.100.2.130, сервер: zapazoid.vistashare.net, запрос: "GET/Static/jquery.jnotify-1.1.min.js HTTP/1.1", хост: "zapazoid.vistashare.net"

Регистрация доступа была настроена как:

    log_format apm '$remote_addr - $remote_user [$time_local] '             
                   '"$запрос" $статус $body_bytes_sent '                   
                   '"$http_referer" "$http_user_agent" '                    
                   '$request_time $upstream_response_time'                 
                   '$upstream_cache_status';

и логи доступа показывали лазание $request_time значения (3-е значение с конца), так как запросы все чаще задерживались, чтобы попасть в настроенный предел:

10.100.2.130 - - [29/ноября/2021:15:46:51 -0500] "GET /Static/jquery.jnotify-1.1.min.js HTTP/1.1" 200 3098 "-" "-" 0,001 0,004 MISS
10.100.2.130 - - [29/ноября/2021:15:46:51 -0500] "GET /Static/jquery.jnotify-1.1.min.js HTTP/1.1" 200 3098 "-" "-" 0,496 0,000 MISS
10.100.2.130 - - [29/ноября/2021:15:46:52 -0500] "GET /Static/jquery.jnotify-1.1.min.js HTTP/1.1" 200 3098 "-" "-" 0,995 0,000 MISS
10.100.2.130 - - [29/ноября/2021:15:46:52 -0500] "GET /Static/jquery.jnotify-1.1.min.js HTTP/1.1" 200 3098 "-" "-" 1,495 0,000 MISS
10.100.2.130 - - [29/ноября/2021:15:46:53 -0500] "GET /Static/jquery.jnotify-1.1.min.js HTTP/1.1" 200 3098 "-" "-" 1,999 0,000 MISS
10.100.2.130 - - [29/ноября/2021:15:46:53 -0500] "GET /Static/jquery.jnotify-1.1.min.js HTTP/1.1" 200 3098 "-" "-" 2,495 0,004 MISS
...
10.100.2.130 - - [29/ноября/2021:15:47:02 -0500] "GET /Static/jquery.jnotify-1.1.min.js HTTP/1.1" 200 3098 "-" "-" 11,467 0,000 MISS
10.100.2.130 - - [29/ноября/2021:15:47:03 -0500] "GET /Static/jquery.jnotify-1.1.min.js HTTP/1.1" 200 3098 "-" "-" 11,964 0,000 MISS
10.100.2.130 - - [29/ноября/2021:15:47:03 -0500] "GET /Static/jquery.jnotify-1.1.min.js HTTP/1.1" 200 3098 "-" "-" 12,466 0,004 MISS
10.100.2.130 - - [29/ноября/2021:15:47:04 -0500] "GET /Static/jquery.jnotify-1.1.min.js HTTP/1.1" 200 3098 "-" "-" 12,963 0,000 MISS
10.100.2.130 - - [29/ноября/2021:15:47:04 -0500] "GET /Static/jquery.jnotify-1.1.min.js HTTP/1.1" 200 3098 "-" "-" 13,460 0,000 MISS
10.100.2.130 - - [29/ноября/2021:15:47:05 -0500] "GET /Static/jquery.jnotify-1.1.min.js HTTP/1.1" 200 3098 "-" "-" 13,961 0,000 MISS
10.100.2.130 - - [29/ноября/2021:15:47:05 -0500] "GET /Static/jquery.jnotify-1.1.min.js HTTP/1.1" 200 3098 "-" "-" 14,452 0,000 MISS
10.100.2.130 - - [29/ноября/2021:15:47:06 -0500] "GET /Static/jquery.jnotify-1.1.min.js HTTP/1.1" 200 3098 "-" "-" 14,946 0,000 MISS
10.100.2.130 - - [29/ноября/2021:15:47:06 -0500] "GET /Static/jquery.jnotify-1.1.min.js HTTP/1.1" 200 3098 "-" "-" 15,446 0,000 MISS

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.