Назад | Перейти на главную страницу

Как скоро пополнится ведро токенов nginx при ограничении запросов в минуту?

Мы решили, что хотим поэкспериментировать и ограничить количество запросов в минуту вместо запросов в секунду на наших сайтах. Однако меня смущает параметр пакета в контексте.

У меня сложилось впечатление, что когда вы используете флаг nodelay, средство ограничения скорости действует как ведро токенов вместо дырявого ведра. В этом случае размер корзины равен параметру пакета, и каждый раз, когда вы нарушаете политику (скажем, 1 запрос / с), вы должны помещать токен в корзину. Как только бакет будет заполнен (равным настройке пакета), вы получите страницу с ошибкой 503.

У меня также сложилось впечатление, что как только нарушитель перестает нарушать политику, токен удаляется из корзины со скоростью 1 токен / с, что позволяет ему восстановить доступ к сайту.

Предполагая, что у меня все верно, мой вопрос: что произойдет, когда я начну регулировать доступ в минуту? Если мы выбрали 60 запросов в минуту, с какой скоростью пополняется ведро токенов?

Из моих экспериментов кажется, что поминутные значения - это всего лишь способ записать ставки с интервалами менее секунды. Итак, 60р / м == 1р / с. Это можно продемонстрировать, установив 60 запросов в минуту, а затем запустив, скажем, 2 запроса в секунду. Он будет ограничен с самого начала, а не только после 60 запросов.

При этом я до сих пор не совсем понимаю, как все это работает :-)

Да, он работает как алгоритм ведра токенов. Я также вручную экспериментировал со своим сервером, чтобы убедиться в этом. Ты можешь видеть https://stackoverflow.com/questions/14869390/nginxngx-http-limit-req-module-for-how-long-is-503-returned-once-exceeding-the например

Если вы выберете 60 запросов / мин, он будет пополнять один токен каждую секунду.