为啥这样设置以后,用自己的压力测试工具测试,不到 100 个并发就触发了 503 ? rate 我是设置的 3000 并发每秒啊
limit_req_zone $binary_remote_addr 抗投诉服务器zone=req:20m rate=3000r/s;
limit_req zone=req nodelay;
压力测试是并发,不是并发 /秒
同时发出 100 个请求,处理完 1 个请求,马上再发 1 个
就是说,并发只保证任一时刻,都有 100 个请求压着服务器,而不是每秒只发 100 个请求
是我没讲清楚,我的测试工具 1 秒内总共发出不到 100 个请求
那你把测试参数和测试结果, nginx 日志贴上来啊
说一半都只能靠猜
nginx.conf :
http{
...
limit_req_zone $binary_remote_addr zone=one:10m rate=3000r/s;
limit_req zone=one nodelay;
}
测试工具我自己写的,就起 20 个线程循环访问网站, 1 秒内的请求书达不到 3000 的, nginx errlog:
2016/07/26 13:42:55 [error] 31706*3954481 limiting requests, excess: 1.000 by zone "one", client: x.x.x.x, server: , request: "GET /hello HTTP/1.1", host: "x.x.x.x", referrer: ""
binary_remote_addr 因为是这个 要看你测试的页面情况 话说干嘛不用别人造好的 waf 轮子 比如 verynginx
$binary_remote_addr 不是客户端 IP 么?页面情况是指啥?
你试试测试的文件单 echo hello word 试试 然后再这个文件基础上 输出个笑脸图片 比如 img ./haha.png a 标签是 域名 /haha.png 再试试
是想说,测试工具把页面上的元素包括图片和 css js 等也请求了所以超过了 rate ?并没有,而且无论我设置 rate 多大,都会 503
因为不清楚你的具体环境还有测试工具 只能说 页面中的 css js 图片之类的也是统计在 binary_remote_addr 中的 你那个限制不管设置多大都是 503 的话没法判断问题 你可以试试测试一个简单的 hello world 页面 测试工具 试试 ab