Как скоро корзина токенов nginx пополняется при ограничении количества запросов в минуту?
Мы решили, что хотим экспериментировать и ограничивать количество запросов в минуту вместо запросов в секунду на наших сайтах. Однако меня смущает параметр пакета в этом контексте.
У меня сложилось впечатление, что когда вы используете флаг 'nodelay', средство ограничения скорости действует как контейнер токенов, а не как протекающий контейнер. В этом случае размер корзины равен параметру пакета, и каждый раз, когда вы нарушаете политику (скажем, 1 требование / сек), вы должны поместить токен в корзину. После того, как корзина заполнится (будет равна установке пакета), вы получите страницу с ошибкой 503.
У меня также сложилось впечатление, что, как только нарушитель перестает идти против политики, токен удаляется из корзины со скоростью 1 токен / с, что позволяет ему восстановить доступ к сайту.
Если предположить, что я правильно понял выше, мой вопрос: что произойдет, когда я начну регулировать доступ в минуту? Если мы выбрали 60 запросов в минуту, с какой скоростью будет пополняться корзина токенов?
2 ответа
Из моих экспериментов кажется, что поминутные записи - это просто способ записать показатели с интервалом менее секунды. Так 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 рег / мин, он будет пополнять один токен каждую секунду.