请问:接口的 rps 低受什么影响? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
mentalidade
V2EX    程序员

请问:接口的 rps 低受什么影响?

  •  
  •   mentalidade 2017-08-30 15:31:20 +08:00 2906 次点击
    这是一个创建于 2972 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用 libvips 做图片裁剪处理。

    写完测试接口,time curl "http://wyc.com:8888/5e9564282f61b0e925a41bd1ac688a48?p=1&w=451&h=451" 接口响应很快:

    real 0m0.042s user 0m0.004s sys 0m0.005s 

    使用 ab 压测:ab -n 1000 -c 100 "http://wyc.com:8888/5e9564282f61b0e925a41bd1ac688a48?p=1&w=451&h=451" 结果 rps 很低

    Server Software: openresty/1.11.2.2 Server Hostname: wyc.com Server Port: 8888 Document Path: /5e9564282f61b0e925a41bd1ac688a48?p=1&w=451&h=451 Document Length: 22921 bytes Concurrency Level: 100 Time taken for tests: 13.543 seconds Complete requests: 1000 Failed requests: 0 Total transferred: 23073000 bytes HTML transferred: 22921000 bytes Requests per second: 73.84 [#/sec] (mean) Time per request: 1354.314 [ms] (mean) Time per request: 13.543 [ms] (mean, across all concurrent requests) Transfer rate: 1663.74 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.7 0 4 Processing: 35 1281 833.9 1137 4821 Waiting: 35 1280 833.9 1137 4821 Total: 36 1281 834.0 1137 4822 

    原来用的 GraphicsMagick 处理,这个 libvips 确实快了许多,内存占用还没测,不过 rps 都很低。

    请问:这个 rps 受什么影响,会导致这么低,该如何优化呢

    7 条回复    2017-08-30 17:18:01 +08:00
    knightdf
        1
    knightdf  
       2017-08-30 15:37:19 +08:00
    一般叫 qps, 主要受后端逻辑处理时长影响
    mentalidade
        2
    mentalidade  
    OP
       2017-08-30 15:50:34 +08:00
    @knightdf 取出图片,因为存在类似于 redis 中,取出不处理直接原图输出,qps 可以达到 4000 多,然后缩放裁剪到一定的比例,再输出导致 qps 急剧降低。不过即使处理图片,单个请求是很快的,50 毫秒左右,就是输出 hello,world 也要 17 毫秒呢。
    就是 qps 低的可怕
    RubyJack
        3
    RubyJack  
       2017-08-30 15:56:52 +08:00
    cpu 密集型,一般量大以后都是 context switch 的开销
    crohn
        4
    crohn  
       2017-08-30 16:00:03 +08:00
    注意做好处理结果缓存,其他的资料不足没法分析
    mentalidade
        5
    mentalidade  
    OP
       2017-08-30 16:17:33 +08:00
    @crohn 会的,一般客户端都是缩放到一定比例,服务器会根据请求把要裁剪的图片处理后再次存放。如果已经存在直接就从 redis 取出来,没有的话处理完存放进去。
    如果已经存在缓存中的话,qps 会达到 3000-5000 的样子。
    想查的话需要什么资料或者有什么工具吗?
    mentalidade
        6
    mentalidade  
    OP
       2017-08-30 16:18:32 +08:00
    @RubyJack 是的,从缓存中取出来就很快,不放入缓存,处理的话,qps 真的低
    mentalidade
        7
    mentalidade  
    OP
       2017-08-30 17:18:01 +08:00
    @RubyJack 确实是,本地压测的时候 Nginx 的四个 woker 的 CPU 占用都在 90%多,压测结束回归到 0 了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2680 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 12:19 PVG 20:19 LAX 05:19 JFK 08:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86