上节描述了通过Non GUI模式运行Jmeter脚本执行压力测试,举了例子如:
Jmeter –n –t test.jmx –l test_result.jtl –e–o ./report
就是以非界面模式执行test.jmx这个脚本,生成结果文件为test_resutl.jtl,运行结束后创建图形仪表报告,放在当前目录的report文件夹下。
编者写第一节的时候就觉得在GUI模式下设置线程数、持续时间、运行次数等其实不是很方便,太依赖GUI设置。于是发现还有一个更好用的功能没有介绍给大家,这节就主要给大家介绍如何更灵活地在命令行设置这几个参数。
一、首先我们先在GUI模式下把线程组、持续时间设成全局变量。
${__P(u_threadNum,)} 获取线程组属性
${__P(u_time,)} 获取时间属性
二、还是执行上节写好的脚本,加上两个全局变量
Jmeter -n -t baidu_tel_local.jmx -lbaidu_test_result7.jtl -e -o ./report7 -Ju_threadNum=100 -Ju_time=180
即增加了设置并发线程数为100,持续时间为180秒
执行180秒的过程中,执行机CPU达到60%。
三、我们再查看Jmeter报告
响应时间:百度验证手机归属地接口并发测试场景中,并发量=100时,有响应的请求基本为<500ms,99%的值平均响应时间为144ms。
业务成功率:并发量=100时,业务成功率=20%,不符合预期目标。还需要降低并发数来测试95%以上成功时候的指标。
RPS:线程组设置100个线程,RPS峰值可以达到1219个每秒。还需多测试不同并发线程数的指标验证该峰值。
Apdex:APDEX性能指数(Application Performance Index),是一个国际通用标准,Apdex是用户对应用程序性能满意度的量化值。它提供了一个统一的测量和报告用户体验的方法,把最终的用户体验和应用性能作为一个完整的指标进行统一度量。下图表示通用用户满意度区域,0
表示没有满意的用户,1
代表所有用户都满意。实际业务系统开发过程中,1
是团队所追求的目标。本次压测获得的值为0.181,明显是不符合要求的。还需要多测几组数据查找最佳的指标。
反之如果Apdex值比较大,表示用户满意度比较大,则说明此时服务器响应速度较快。
大家看完有什么看法可以随时留言,笔者继续研究和大家探讨。