大家好!
来自NGINX文档 “如果您不需要在突发限制内延迟冗余请求,那么您应该使用 nodelay 参数。” 也就是说,突发中的“nodelay”请求会被立即处理吗?
然后是有区别的:
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秒的间隔。