Re: Ограничение количества запросов

Валентин Бартенев vbart на nginx.com
Пн Авг 8 10:52:08 UTC 2016


On Monday 08 August 2016 06:21:14 nNgzlTtv3k5lzmKRvlmS22tSl8sJr68k wrote:
> Поисковые боты часто дёргают сайты, чем создают большую нагрузку. Была
> предпринята попытка ограничить запросы к php-страницам.
> Вот конфиг nginx:
> 
> http {
> 	......
> 
> 	limit_req_zone $bot_key zone=php_bot:100m rate=5r/s;
> 
[..]
> Секций server { ... } несколько, они все идентичные.
> В итоге после полного перезапуска nginx в логе видим:
> 
> 08/Aug/2016:12:27:00 +0300 200 site.com ... upstream_response_time=0.119
> 08/Aug/2016:12:27:00 +0300 503 site.com
> 08/Aug/2016:12:27:00 +0300 503 site.com
> 08/Aug/2016:12:27:00 +0300 200 site.com ... upstream_response_time=0.117
> 08/Aug/2016:12:27:00 +0300 503 site.com
> 08/Aug/2016:12:27:00 +0300 200 site.com ... upstream_response_time=0.116
> 08/Aug/2016:12:27:00 +0300 200 site.com ... upstream_response_time=0.022
> 
> 08/Aug/2016:12:27:01 +0300 200 site.com ... upstream_response_time=0.129
> 08/Aug/2016:12:27:01 +0300 503 site.com ...
> 08/Aug/2016:12:27:01 +0300 200 site.com ... upstream_response_time=0.074
> 08/Aug/2016:12:27:01 +0300 503 site.com ...
> 08/Aug/2016:12:27:01 +0300 200 site.com ... upstream_response_time=0.030
> 08/Aug/2016:12:27:01 +0300 503 site.com ...
> 
> За "01" секунду всего 3 успешно обработанных запроса, за предыдущую - 4,
> несмотря на то, что ограничение допускает обработку 5 запросов.
[..]

У модуля нет никакой дискретности в 1 секунду, так же как ограничение скорости
60 км/ч, не означает что это должна быть средняя скорость движения в течение
часа.

Установленное вами ограничения допускает не более 1 запроса в течение 200мс.

Если вы хотите разрешить всплески и принимать запросы, в том числе пришедшие с
интервалом менее 200мс, то нужно настроить параметр burst.

--
Валентин Бартенев


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