我们已经决定,我们要试验和限制每分钟的请求,而不是每秒在我们网站上的请求。 但是,在这种情况下,我被突发参数弄糊涂了。
我的印象是,当你使用'nodelay'标志时,速率限制设施就像一个令牌桶而不是一个漏桶。 情况就是这样,桶大小等于burst参数,每次违反策略(比如说1 req / s),就必须在桶中放置一个令牌。 一旦桶已满(等于突发设置),就会给你一个503错误页面。
我也有这样的印象:一旦违规者停止违反政策,一个令牌就会以1令牌/秒的速度从存储桶中删除,从而允许他重新进入该站点。
假设我有上述的正确的,我的问题是什么时候开始调整访问每分钟? 如果我们select每分钟60个请求,那么令牌桶以什么速率进行补充?
根据我的实验,似乎每分钟只是一个写速度在亚秒间隔的方法。 所以60r / m == 1r / s。 这可以通过将其设置为每分钟60个请求,然后启动每秒2个请求来演示。 从一开始就会受到限制,不仅在60个请求发出之后。
这就是说,我仍然不完全明白这是如何工作:-)
是的,它确实像令牌桶algorithm一样工作。 我也手动试验我的服务器来validation这一点。 你可以看到https://stackoverflow.com/questions/14869390/nginxngx-http-limit-req-module-for-how-long-is-503-returned-once-exceeding-例如
如果你select60请求/分钟,它会每秒补充一个令牌。