limit_req_zone率并没有像我想的那样工作。无论我设置多少,它仍然可以作为速率= 1r / s。
我的nginx.conf:
limit_req_zone $binary_remote_addr zone=lwrite:10m rate=300r/s;
...
limit_req zone=lwrite burst=5;
阅读此文档后(http://nginx.org/en/docs/http/ngx_http_limit_req_module.html),I认为我的nginx应该只在ip访问超过300r / s时延迟请求,并在访问超过305 / s时返回5xx。
但是,如果我运行test: ab -c 12 -n 12&#39; 127.0.0.1:8090 / index.html?_echo = abc&#39; ,输出为:< / p>
Concurrency Level: 12
Time taken for tests: 0.051 seconds
Complete requests: 12
Failed requests: 6
(Connect: 0, Receive: 0, Length: 6, Exceptions: 0)
Write errors: 0
Non-2xx responses: 6
我在nginx error.log中发现了5个警告和6个错误,结果只是第一次访问成功,接下来的5次是延迟,最后6次返回错误。因此,无论我设置多高,它仍然可以作为rate = 1r / s。
为什么呢?有没有人遇到同样的问题?我的nginx版本是1.5.13和1.7.11