Привет Всем!
Из документации 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 секунды.
Комментариев нет:
Отправить комментарий