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

2017-08-30 15:31:20 +08:00
 mentalidade

使用 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 受什么影响,会导致这么低,该如何优化呢

2537 次点击
所在节点    程序员
7 条回复
knightdf
2017-08-30 15:37:19 +08:00
一般叫 qps, 主要受后端逻辑处理时长影响
mentalidade
2017-08-30 15:50:34 +08:00
@knightdf 取出图片,因为存在类似于 redis 中,取出不处理直接原图输出,qps 可以达到 4000 多,然后缩放裁剪到一定的比例,再输出导致 qps 急剧降低。不过即使处理图片,单个请求是很快的,50 毫秒左右,就是输出 hello,world 也要 17 毫秒呢。
就是 qps 低的可怕
RubyJack
2017-08-30 15:56:52 +08:00
cpu 密集型,一般量大以后都是 context switch 的开销
crohn
2017-08-30 16:00:03 +08:00
注意做好处理结果缓存,其他的资料不足没法分析
mentalidade
2017-08-30 16:17:33 +08:00
@crohn 会的,一般客户端都是缩放到一定比例,服务器会根据请求把要裁剪的图片处理后再次存放。如果已经存在直接就从 redis 取出来,没有的话处理完存放进去。
如果已经存在缓存中的话,qps 会达到 3000-5000 的样子。
想查的话需要什么资料或者有什么工具吗?
mentalidade
2017-08-30 16:18:32 +08:00
@RubyJack 是的,从缓存中取出来就很快,不放入缓存,处理的话,qps 真的低
mentalidade
2017-08-30 17:18:01 +08:00
@RubyJack 确实是,本地压测的时候 Nginx 的四个 woker 的 CPU 占用都在 90%多,压测结束回归到 0 了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/386899

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX