Apache Bench 压力测试
11 November 2014
ab压力测试,说一下我的经验
项目开发,尤其是接口开发完之后,都需要进行压力测试。这样做可以帮助我们检验接口的平均响应时间。比如我们接口是查询数据库,我们可以将压力测试的结果和一般常见的相比,如果明显变慢,那么可能就是逻辑有问题或者是SQL查询有问题。这样可以在宏观上避免失误。在压力测试的时候,还可以顺便用top
命令监控一下内存情况,看一下是否存在内存泄漏。
Apache提供了ab工具,直接安一个就成。也可以使用wrk进行测试。ab工具有个坑,测试的url后面需要加个/
,要不会提示invalid Url
。
ab -c 10 -n 100 http://www.baidu.com/
Requests per second: 47.46 [#/sec] (mean)
Time per request: 210.682 [ms] (mean)
Time per request: 21.068 [ms] (mean, across all concurrent requests)
-c
是并发数,-n
是压力次数。并发10的情况下,处理响应时间是210ms,那么响应一次就是21ms,每秒的响应次数就是1000/21=47次。一般还会预估系统响应能力,如果要求每秒能够响应1000次,再假设前面压的是一台机子,那么就最少需要21台服务器。
再补充一些。压力测试最好直接连到服务器上去压本机IP和端口,而不是去呀域名,因为CDN或者Nginx,还当前网络情况都会影响到响应时间。这样做可以简化流程,便于分析结果。并且我们本身只负责开发,其它的交给运维去处理就好了。
如果一套接口是相关的,比如用户增加购物车,购物车列表接口。我们不光要单独去压这些接口,最好再进行一次集合测试。比如,批量去压添加购物车的接口,然后去压购物车列表接口。观察一下列表接口能够正常返回之前批量压添加购物车接口的时间。但是具体怎么做,我目前也不是很明白,希望大神指教。
原文链接:Apache Bench 压力测试,转载请注明来源!
–EOF–