Страницы

Поиск по вопросам

понедельник, 17 июня 2019 г.

NGINX burst + nodelay против большего лимита запросов

Привет Всем!
Из документации NGINX "Если же избыточные запросы в пределах лимита всплесков задерживать не требуется, то следует использовать параметр nodelay". То есть имея "nodelay" запросы в пределах burst будут обработаны немедленно?
Тогда есть ли разница между:
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; limit_req zone=one burst=5 nodelay;
И
limit_req_zone $binary_remote_addr zone=one:10m rate=6r/s; limit_req zone=one;
Благодарю за ответ!


Ответ

Разница есть и значительная.
В документации написано не очень внятно, но в реальности rate=6r/s означает что после успешного запроса все остальные в течении ≈0.16 секунды будут отклонены, т.е. вы не можете отправить 6 запросов сразу и подождать секунду, вы должны отправлять их по одному с перерывом в одну шестую секунды.
burst же позволяет «занять» обработчик запроса из будущего (обработать редкие всплески). Но среднее количество обработанных запросов всё равно не будет превышать заданный rate
В ваших примерах в первом случае вы можете мгновенно получить ответы на 6 запросов, но следующий успешный запрос будет только через секунду после первого. Во втором случае вы можете обрабатывать 6 запросов в секунду, но между каждым запросом должен быть перерыв в 1/6 секунды.

Комментариев нет:

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