今天下班时公司安排了一个同事来对项目做集群性能测试,怀着对性能测试的好奇心,下班后没有着急离开,而是等待
那位同事的到来,然后在旁边学习了下如何使用Badboy和jmeter做性能测试。
Badboy,第一眼看见这个单词,以为是坏孩子的意思,后来一想,它是专门用来给项目找茬来的,取名为Badboy
倒是平添了几分可爱,呵呵。
Badboy是用来录制操作过程的,它录制的结果是被jmeter做并发测试的素材使用。
Jmeter是Apache下的一个完全基于JAVA开发的测试工具,可以很方便的用来进行并发测试。
(1)运行ApacheJmeter,文件à打开,然后选择刚才保存的录制文件Script.jmx
(2)设置模拟并发的线程数量
(3)添加感兴趣的监听类型
Label:每个JMeter的element(例如HTTPRequest)都有一个Name属性,这里显示的就是Name属性的值
#Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
为了解答上面的疑问,我们先来看一张表:
在上面这个表中包含了几个不同的列,其含义如下:
CmdID测试时被请求的页面
NUM响应成功的请求数量
我想看完了上面的这个表和各列的解释,不用多说大家也可以明白我的意思了。我把结论性的东西整理一下:
事实上,在性能测试领域中还有更多的东西是目前的商业测试工具或者开源测试工具都没有专门讲述的——换句话说,性能测试仅仅有工具是不够的。我们还需要更多其他领域的知识,例如数学和统计学,来帮助我们更好的分析性能数据,找到隐藏在那些数据之下的真相。
Note:关于50%和90%并发用户数的含义,请参考下文
Error%:本次测试中出现错误的请求的数量/请求的总数
Throughput:吞吐量——默认情况下表示每秒完成的请求数(RequestperSecond),当使用了TransactionController时,也可以表示类似LoadRunner的TransactionperSecond数
KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
求并发用户数公式
C=1000*5/30=166.7
当然,在性能测试上,任何公式都不是严谨的,最重要的是对系统做出有效正确的分析。
二、软件性能的几个主要术语
完成客户端用户请求的一个交易的总时长
2、并发用户数的计算公式
系统用户数:系统额定的用户数量,如一个OA系统,可能使用该系统的用户总数是2000个,那么这个数量,就是系统用户数
平均并发用户数的计算:
C=nL/T
并发用户数峰值计算:
C^约等于C+3*根号C
其中C^是并发用户峰值,C是平均并发用户数,该公式遵循泊松分布理论
3、吞吐量的计算公式
从业务角度看,吞吐量可以用:请求数/秒、页面数/秒、人数/天或处理业务数/小时等单位来衡量
从网络角度看,吞吐量可以用:字节/秒来衡量
对于交互式应用来说,吞吐量指标反映的是服务器承受的压力,他能够说明系统的负载能力
以不同方式表达的吞吐量可以说明不同层次的问题,例如,以字节数/秒方式可以表示数要受网络基础设施、服务器架构、应用服务器制约等方面的瓶颈;已请求数/秒的方式表示主要是受应用服务器和应用代码的制约体现出的瓶颈。
当没有遇到性能瓶颈的时候,吞吐量与虚拟用户数之间存在一定的联系,可以采用以下公式计算:F=VU*R/T
4、性能计数器
资源利用率:指系统各种资源的使用情况,如cpu占用率为68%,内存占用率为55%,一般使用“资源实际使用/总的资源可用量”形成资源利用率。
A、首先计算出系统的并发用户数
C=nL/TF=R×C
B、统计出系统平均的吞吐量
F=VU*R/TR×C=VU*R/T
C、统计出平均每个用户发出的请求数量
R=u*C*T/VU
TS=T/R
系(稳定运行情况下):TPS=U_concurrent/(T_response+T_think)。
示例1:
每分钟的数据库事务
每秒传送的文件千字节数
每秒读或写的文件千字节数
每分钟的Web服务器命中数
举个例子:一个理发店,只有一个理发师、一把理发椅子、一张方便客人等待的长凳。理发师一次只能处理一个客户,其他等待的用户显得很不耐烦,外面打算进来理发的人也放弃了在这家店理发的打算……
示例2:
我们可以利用“门”的概念来理解这里面的偏差!
首先,我们假设如下的情况:
共有5个人;
有1扇门;
如何才能提高人的通过效率呢?即,如何才能提高门的吞吐量呢?