V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jarlyyn
V2EX  ›  问与答

关于压力测试工具的问题

  •  
  •   jarlyyn · 2017-07-20 02:43:15 +08:00 · 2881 次点击
    这是一个创建于 2444 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这两天在折腾内网统一登录工具,做了个模拟接口,为了看自己做的 session/token 部分是否有坑,跑了个 ab 测试。 2014 rmbp Intel(R) Core(TM) i5-4278U CPU @ 2.60GHz ab -c 1000 -n 50000 基本上的数据是 不带 session/token 纯静态 JSON 数据的接口是 25k rps 带 session/token 纯静态 JSON 数据的接口是 18k rps 基本还算正常。

    接着想到前几个月升级的游戏电脑上跑一下看看数字让自己爽一下。 本想 8 核桌面 U 总比双核低电压 U 要翻个几倍吧,结果反而郁闷了一把。 ryzen 7 1700 oc 3.6 ghz ab -c 1000 -n 50000

    不带 session/token 纯静态 JSON 数据的接口是 35k rps 带 session/token 纯静态 JSON 数据的接口是 32k rps

    第一时间反映觉得自己果然是个坑货,写出来的代码里肯定都是坑。

    但转念又一想,又觉得不靠谱。在我的笔记本上跑测试的时候,基本上是服务占用 280%左右的 cpu,ab 占用 90%左右的 cpu。也就说,如果不跑 ab,裸跑服务的话,我的低压 I5 能超过超频过的 ryzen 7?这样的话,AMD 这哪是 360 度翻身啊,这至少是 720 度翻身了。

    再仔细一看 top 数据。服务只有跑了 400%多的 cpu,也就之跑了两个多核的性能,而 ab 倒是 99%了。

    所以

    • 问题一:ab 是不是只能单线程测试,不能利用多核,所以不适合在多核机器上测试数据?
    • 问题二:如果是 ab 的问题,那有没有更合适的更通用的支持多线程良好的压力测试工具?

    附:

    图一:不带 session 的测试结果

    ab -c 1000 -n 100000 http://127.0.0.1:8000/usercenter/api.v1/frontend/systeminfo

    https://wx4.sinaimg.cn/large/63fa5d6fgy1fhprciou7bj20hl07pwet.jpg

    图二:带 session 的测试结果

    ab -H "Token: admin1-yJAb9MwUTKow39ykbUdLn9iVxDkXCvG1ZVxMqz7W5IxV1upllIucX58vhU8bSwUTFZGvgjBPPL8PeVSKaiqzfIDK1l3alTDGytxCjXmXHzhS3raXc1Dgi1PHBFbC45GMfqSPyJB0aepiyHAahYsVc2nv5zNzOncTjF55hAhqwKZBs546JiCot8jVXqHuJYaO9Q4wwGA20okVbU43n2pLd3rQhEKGj4BHwvfJbbEaQUiukMSofmMPeONPvswdKTn5" -c 1000 -n 100000 http://127.0.0.1:8000/usercenter/api.v1/rest/user

    https://wx2.sinaimg.cn/mw690/63fa5d6fgy1fhprcis41sj20g5077t90.jpg

    图三:测试时的 cpu 占用状况

    https://wx1.sinaimg.cn/mw690/63fa5d6fgy1fhprcionkfj20h803maac.jpg

    图四:测时事的 CPU 实时占用与曲线

    https://wx1.sinaimg.cn/mw690/63fa5d6fgy1fhprciqwj6j20xt05l0v7.jpg

    4 条回复    2017-07-20 18:33:20 +08:00
    jarlyyn
        1
    jarlyyn  
    OP
       2017-07-20 03:10:55 +08:00
    找了个 go 语言开发的压力测试工具 go-wrk,可以跑满 cpu。

    基本确定了是 ab 的问题。

    这工具在跑不带 session 的情况下 cpu 占用完全压制了我的服务……跑出来的数字大概是 100k rps 左右

    带 session 的时候我的坑爹代码终于发挥了实力占用了更多的 cpu,跑出来大概是 66k rps 左右。

    我的代码真是不负我所望的坑啊……

    那么现在的问题是是否有 cpu 占用更小效率更好的测试工具么?

    这样能更好的体现出自己代码的效率问题,同时也便于我看数字自 high ……
    msg7086
        2
    msg7086  
       2017-07-20 03:33:23 +08:00
    多开 ab ?万兆局域网另外跑一台做客户端?
    jarlyyn
        3
    jarlyyn  
    OP
       2017-07-20 10:11:10 +08:00
    @msg7086

    多开的话肯定数据难以精确啊……不太可能同时开始和结束……

    估计只有另开电脑了,而且从我这测试看请求的机器配置还不太能比跑服务的机器低。
    jarlyyn
        4
    jarlyyn  
    OP
       2017-07-20 18:33:20 +08:00
    这段坑爹程序跑坏了一块 i7

    https://www.v2ex.com/t/223402#reply81

    升维攻击啊这是
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   937 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:00 · PVG 05:00 · LAX 14:00 · JFK 17:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.