性能测试工具ab
1 ab工具简介:
全称:apache bench;ab是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。
2 优点
2.1、小巧。
2.2、理论支持655350并发数。
2.3、使用简单方便,一行指令即可,如:ab -c 100 -n 10000 http://192.168.0.32/ 这个例子的意思是100个用户并发访问32环境主页,共10000次请求。
2.4、可精确控制请求次数:一些特殊场景会有此类需求。如上例子,控制访问10000次。
3 缺点
3.1、请求方式单一:普通访问为GET请求,如果要使用POST请求,则需使用文本填写post请求参数。目前没有在linux上实验过。
3.2、请求不能设置检查点,从下面例子中可得:一个必传2个token、若干入参的请求,在传一个token、不传入参…情况下请求,AB工具均返回报告,并不能确定该请求是成功的(业务上的成功)。
4 下载ab工具:
进入apache官网 http://httpd.apache.org/ 下载apache即可
5 启动ab工具:
在windows环境下,apache安装路径为D:\use\Apache24\为例
打开终端进入bin目录下,输入命令
D:\use\Apache24\bin 启动ab
6 查看AB是否安装成功,ab -V
7 查看ab的使用参数
有关ab命令的使用,我们可以通过帮助命令进行查看。如下:
ab --help
8 开始测试:
4.1 输入命令 ab -n 100 -c 10 http://baidu.com/ 其中-n 表示请求数,-c表示并发数 命令输入完毕就能出报告(如下图,报告指标分析后面讲)
4.2 有时候压测需要登录,获取session才能继续业务请求
请求步骤
1 先用账户和密码登录后,用开发者工具找到标识这个会话的Cookie值(Session ID)记下来
2 将该cookie放在header中请求,输入命令:ab -n 1 -c 1 -H " Content-Type=application/x-www-form-urlencoded" http://financial_agent.hou2008.com/ -H是Header的意思
示例:
3 若需多个cookie便将这些cookie均放入header中,用英文分号隔开
输入命令:ab -n 1 -c 1 -H “X-API-TOKEN=20283766817077352;Content-Type=application/x-www-form-urlencoded” http://financial_agent.hou2008.com/
4.3 关于参数传递的问题
get请求传递参数 ab -n 10 -c 10 “http://financial_agent.hou2008.com/?Version=1.0&InputCharset=GBK&SignType=MD5&PlatFormCode=CPOTA&OrderNo=TEST0123456784&Sign=185FA68CA23AAE7B3A02A226ABD30297”
注意:请求URL要使用双引号括起来,否则ab无法识别&符号
post请求传递参数
1 参数文件内容
输入命令:ab -n 1 -c 1 -T “application/x-www-form-urlencoded” -p p.txt http://financial_agent.hou2008.com/
注意:-T是大写英文字母,-p是参数文档路径,post表单格式为:application/x-www-form-urlencoded
请求既包含头信息,也包含参数的
ab -n 1 -c 1 -H “X-API-TOKEN=20283766817077352” -T “;Content-Type=application/x-www-form-urlencoded” -p p.txt http://financial_agent.hou2008.com/
9 报告分析
服务器信息
这段展示的是web服务器的信息,可以看到服务器采用的是nginx,域名是financial_agent.hou2008.com,端口是80
文档信息
这段是关于请求的文档的相关信息,所在位置“/”,文档的大小为166 bytes(此为http响应的正文长度)
这段展示了压力测试的几个重要指标
Concurrency Level: 1 并发请求数
Time taken for tests: 0.057 seconds 整个测试持续的时间
Complete requests: 1 完成的请求数
Failed requests: 0 失败的请求数
Non-2xx responses 返回code码不是2xx的请求数
Total transferred 353 bytes 整个场景中的网络传输量
Total body sent 353 发送的body总数
HTML transferred: 166 bytes 整个场景中的HTML内容传输量
重要指标(后面括号中的 mean 表示这是一个平均值)
Requests per second: 17.56 [#/sec] (mean) 吞吐率,相当于 LR 中的每秒事务数
Time per request: 56.944 [ms] (mean) 用户平均请求等待时间,相当于 LR 中的平均事务响应时间
Time per request: 56.944 [ms] (mean, across all concurrent requests) 服务器平均请求处理时间
Transfer rate: 5.59 [Kbytes/sec] received 平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题
网络消耗时间
这段表示网络上消耗的时间的分解
响应情况
这段是每个请求处理时间的分布情况,50%的处理时间在684ms内,66%的处理时间在692ms内…,重要的是看90%的处理时间
以上的命令参数未常用参数,要使用更多可ab --help命令查看。
性能测试工具AB