V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
yamada
V2EX  ›  NGINX

nginx limit_req 模块的问题

  •  
  •   yamada · 2016-07-25 23:43:14 +08:00 · 2494 次点击
    这是一个创建于 2838 天前的主题,其中的信息可能已经有所发展或是发生改变。

    为啥这样设置以后,用自己的压力测试工具测试,不到 100 个并发就触发了 503 ? rate 我是设置的 3000 并发每秒啊

    limit_req_zone $binary_remote_addr zone=req:20m rate=3000r/s; limit_req zone=req nodelay;

    9 条回复    2016-07-27 09:46:40 +08:00
    lhbc
        1
    lhbc  
       2016-07-26 01:01:42 +08:00
    压力测试是并发,不是并发 /秒
    同时发出 100 个请求,处理完 1 个请求,马上再发 1 个
    就是说,并发只保证任一时刻,都有 100 个请求压着服务器,而不是每秒只发 100 个请求
    yamada
        2
    yamada  
    OP
       2016-07-26 09:07:44 +08:00 via Android
    @lhbc 是我没讲清楚,我的测试工具 1 秒内总共发出不到 100 个请求
    lhbc
        3
    lhbc  
       2016-07-26 09:47:37 +08:00 via Android
    @yamada 那你把测试参数和测试结果, nginx 日志贴上来啊
    说一半都只能靠猜
    yamada
        4
    yamada  
    OP
       2016-07-26 13:55:21 +08:00
    @lhbc 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#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: ""
    zeraba
        5
    zeraba  
       2016-07-26 18:26:10 +08:00 via Android
    binary_remote_addr 因为是这个 要看你测试的页面情况 话说干嘛不用别人造好的 waf 轮子 比如 verynginx
    yamada
        6
    yamada  
    OP
       2016-07-26 20:42:21 +08:00
    @zeraba $binary_remote_addr 不是客户端 IP 么?页面情况是指啥?
    zeraba
        7
    zeraba  
       2016-07-27 09:12:17 +08:00 via Android
    @yamada 你试试测试的文件单 echo hello word 试试 然后再这个文件基础上 输出个笑脸图片 比如 img ./haha.png a 标签是 域名 /haha.png 再试试
    yamada
        8
    yamada  
    OP
       2016-07-27 09:35:36 +08:00 via Android
    @zeraba 是想说,测试工具把页面上的元素包括图片和 css js 等也请求了所以超过了 rate ?并没有,而且无论我设置 rate 多大,都会 503
    zeraba
        9
    zeraba  
       2016-07-27 09:46:40 +08:00 via Android
    @yamada 因为不清楚你的具体环境还有测试工具 只能说 页面中的 css js 图片之类的也是统计在 binary_remote_addr 中的 你那个限制不管设置多大都是 503 的话没法判断问题 你可以试试测试一个简单的 hello world 页面 测试工具 试试 ab
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2304 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 03:19 · PVG 11:19 · LAX 20:19 · JFK 23:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.