limit_req

Konstantin Svist fry.kun на gmail.com
Вс Янв 2 23:01:11 MSK 2011


On 01/02/2011 11:40 AM, Евгений Торопов wrote:
> Добрый вечер,
>
> nginx version: nginx/0.8.54
>
> Отрывок из конфига:
>
> ...
> limit_req_zone  $binary_remote_addr  zone=test:10m   rate=10000r/s;
> location /some/url {
> 	limit_req   zone=test;
> }
> ...
>
> Даже при таком огромном рейте видим в error log-е:
>
> ...
> 2011/01/02 19:35:44 [error] 8663#0: *21852 limiting requests, excess: 1.000 by zone "test", client: xxx.xxx.xxx.xxx, server: site.com, request: "POST /some/url HTTP/1.0", host: "www.site.com"
> 2011/01/02 19:35:44 [error] 8663#0: *21853 limiting requests, excess: 1.000 by zone "test", client: xxx.xxx.xxx.xxx, server: site.com, request: "POST /some/url HTTP/1.0", host: "www.site.com"
> 2011/01/02 19:35:44 [error] 8663#0: *21849 limiting requests, excess: 1.000 by zone "test", client: xxx.xxx.xxx.xxx, server: site.com, request: "POST /some/url HTTP/1.0", host: "www.site.com"
> 2011/01/02 19:35:44 [error] 8663#0: *21850 limiting requests, excess: 1.000 by zone "test", client: xxx.xxx.xxx.xxx, server: site.com, request: "POST /some/url HTTP/1.0", host: "www.site.com"
> ...
>
> Расскажите, пожалуйста, как такое возможно.
>
> Спасибо.
>
> Евгений
> jt at aaanet.ru
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru

Включите параметр burst=X

Без параметра burst, если новый запрос пришёл в течении 1s/10000 = 10us 
от прежде отработанного, то он будет отброшен.
Если же есть burst=X, то до X новых запросов будут отработаны, но 
интервал будет увеличен каждый раз на 10us. Если придёт >X запросов в 
интервале, они будут отрублены.

HTH



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