Re: excess в ngx_http_limit_req_module

Maxim Dounin mdounin на mdounin.ru
Пн Апр 16 09:14:23 UTC 2012


Hello!

On Mon, Apr 16, 2012 at 05:47:22AM +0000, Кокорин Иван Владимирович wrote:

> Добрый день.
> Использую ngx_http_limit_req_module. В error_log появляются 
> сообщения вида:
> 2012/04/16 11:26:51 [warn] 51234#0: *2960920 delaying request, excess: 0.530, by zone "ib_soap", client: 172.16.3.204, server: ***, request: "POST /InformbureauApi.php HTTP/1.1", host: "***"
> 
> Если я правильно понимаю, это означает, что запрос был задержан 
> на 0.530 сек и это время в access_log должно отразиться в виде 
> увеличения $request_time относительно $upstream_response_time.
> 
> В access_log этому запросу соответствует запись
> 16/Apr/2012:11:26:51 +0600 *** 0.090 200 [ 127.0.0.1:10010 200 0.037 ][ 172.16.3.204 POST /InformbureauApi.php HTTP/1.1 756 ][ "-" "PHP-SOAP/5.2.9" "-" ]
> 
> Разница между $request_time (0.090) и  $upstream_response_time 
> (0.036) равна 0.053 сек. Т.е. фактическая разница в 10 раз 
> меньше, чем значение excess. То же самое и с другими запросами. 
> Я что-то неправильно понимаю или значение excess в лог 
> записывается с ошибкой?

Excess - это количество запросов, сейчас посчитанное в 
соответствующем bucket'е.  Задержка будет на время (excess / 
rate), обеспечивающей поступление запросов со скоростью, не 
превышающей заданную.

Т.е. если у вас rate=10r/s, то задержка в 0.053s - это правильно.

Maxim Dounin



Подробная информация о списке рассылки nginx-ru