一、ab原理
ab命令会创建多个并发线程,模拟多个用户去对同一个URL地址去访问。
二、ab安装
安装apache后,bin目录下会自带ab.exe,如果安装的是tomcat则下载ab.exe直接放在bin目录下即可。
三、参数说明
进入到ab 所在目录后,ab -help 可以查询到所有的参数说明。
具体参数说明如下:
-n 执行会话总数,默认为1个
-c 每次的并发数,默认为1个
-t 本次测试限制的总时间
-p 传递时所带的参数,一般以txt文件形势存在
-T 传递数据所用的头信息
-v 设置信息显示的详细程度
-w 以HTML的形式显示结果
-i 执行head请求而不是get
-x 设置<table>属性的字符串
-y 设置<tr>属性的字符串
-z 设置<td>属性的字符串
-C 对请求附加一个cookie行,name=value的参数对形式
-H 对请求附加一个头信息,用冒号分隔值和对
-A 对服务器提供BASIC认证,无论服务器是否需要,都会被发送成功
-P 对一个中转代理提供BASIC认证
-X 使用代理服务器
-V 显示版本号并退出
-k 启用HTTP KEEPALIVE功能,可以在一会话中执行多个请求
-d
-S
-g 把测试结果放入到一个“gnuplot”或TSV的文件中,第一行为标题
-e 产生一个以逗号分隔的文件,包含了每个百分比下响应的请求时间
-r
-h 显示使用方法
四、ab性能指标
五、注意事项
1. apache ab判断是否响应成功之时判断2xx的响应代码,不接受服务器的返回结果,所以相比较来说,ab会比loadrunner并发数高,TPS大。
2. ab测试的并发数与其所在机器的CPU的颗粒数有很大关系,颗粒数越大,测试结果所支持的并发数越大
六、带参数的性能测试
比如账号密码参数,可以在ab命令的同级建一个txt文件,如test.txt,里面写上username=admin&password=admin
完整命令:ab -n 100 -c 10 -p test.txt -T application/x-www-form-urlencoded http://*/*
七、实例报告
1. 下图为50个并发,总数为100的结果
2. 下图为80个并发,总数为100的结果
3. 下图为90个并发,总数为100的结果
4. 下图为100个并发,总数为100的结果
5. 下图为50个并发,总数为120的结果
6. 多次测试结果图表
100%响应时间 | 错误数 | 吞吐量 | 平均响应时间 | |
总100,并50 | 1.358s | 0 | 5.33 | 0.9383 |
总100,并80 | 1.953s | 0 | 5.34 | 1.4975s |
总100,并90 | 2.1159s | 0 | 4.57 | 1.9689s |
总100,并100 | time out | -- | -- | -- |
总120,并50 | 关闭连接 | -- | -- | -- |
7. 结果分析
1)根据性能需求判断平均响应时间是否在规定要求内,若无需求则遵守业界标准,一般业界网站的用户感受符合一个2-5-8标准,即2s以内响应良好,2-5s可以忍受,8s以上基本不可忍受。以此来看并发90以内,系统响应均表现良好.
2)并发100时出现timeout,可能原因为:压力太大导致服务器阻塞超时,网络限制导致超时,服务器或中间件存在限制
3)总数超过120关闭连接,可能原因为:服务器或中间件存在限制