第一篇文章,我们介绍了如何安装ab工具

第二篇文章,我们介绍了如何使用ab工具进行压测,顺便简单分析了结果中每行分别代表什么意思

但现在有两个问题:

1、得到什么样的结果,说明测试通过

一般来说,如果有性能指标,即多少并发用户下,请求失败率小于99.999%,且平均响应时间小于某个值(根据实际情况而定),则认为满足性能要求,测试通过。

如果没有性能指标,最简单的做法就是对比自己和竞品的性能数据指标。(前提是要用你线上服务器来测试,比如你的产品将来打算部署到8G 16核服务器,你在4G服务器上测试得到的数据是需要换算一下,再比较)

请求失败率=请求失败数/总请求数。

如果涉及到支付,钱,等重点接口要求100%正确,如果一般类型接口要求99.999%正确(这个有弹性,根据自己项目实际业务定,一般来说不低于99.9%)

2、如果测试不通过的话,可能原因是什么?

内存?CPU?IO?网络?不是Apache ab的能力范围了,需要借助其它工具或命令定位。


性能测试过程中有几个重要指标:

1、吞吐率(Requests per second)
服务器并发处理能力的量化描述,单位是reqs/s,指的是在某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
记住:吞吐率是基于并发用户数的。这句话代表了两个含义:
a、吞吐率和并发用户数相关
b、不同的并发用户数下,吞吐率一般是不同的
计算公式:总请求数/处理完成这些请求数所花费的时间,即
Request per second=Complete requests/Time taken for tests
必须要说明的是,这个数值表示当前机器的整体性能,值越大越好。


所以,如果有人动不动就问你某个页面(请求或接口)的最大吞吐率,就是耍流氓,不确定并发用户数怎么确定吞吐率?


2、并发连接数(The number of concurrent connections)
并发连接数指的是某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。


3、并发用户数(Concurrency Level)
要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。在HTTP/1.1下,IE7支持两个并发连接,IE8支持6个并发连接,FireFox3支持4个并发连接,所以相应的,我们的并发用户数就得除以这个基数。


4、用户平均请求等待时间(Time per request)
计算公式:处理完成所有请求数所花费的时间/(总请求数/并发用户数),即:
Time per request=Time taken for tests/(Complete requests/Concurrency Level)


5、服务器平均请求等待时间(Time per request:across all concurrent requests)