JMeter性能测试实例
一、测试目标
1)测试目标网站是http://127.0.0.1:1080/WebTours/
2)测试目的是得到该网站在100和500个虚拟用户并发登录网站
“http://127.0.0.1:1080/WebTours/”的平均响应时间,错误率,吞吐量,程序所在机器的CPU运行效率,memory占用大小
二、使用badboy工具录制登录脚本
badboy下载链接地址
打开badboy工具,点击工具栏上的红色圆形按钮,在地址栏中输入被测试项目的地址“http://127.0.0.1:1080/WebTours/”,录制登录过程
点击“跳转”后
进入登录页面
登录成功后
此时录制完成,点击工具栏上的红色圆形按钮结束录制。
选择"文件"–Export to Jmeter…
得到Jmeter脚本Login.jmx
具体使用详情可参考此篇博客
可能遇到的问题解决方法可参考此篇博客
三、Jmeter导入Login.jmx脚本
Jmeter中打开Login.jmx脚本,得到如下目录树
四、用户名的参数化
参数化方式:添加–前置处理器–用户参数(勾选上每次迭代更新一次)
单击"http://127.0.0.1/WebTours/login.pl",将username的值改为${user}
五、关联
在“http://127.0.0.1/WebTours/nav.pl”请求下右击,选择添加–后置处理器–正则表达式提取器
正则表达式提取器的设置如下图显示:
单击"http://127.0.0.1/WebTours/login.pl",将userSession的值改为${session}
六、添加监听器(Listener)
脚本的主要部分设置完成后,需要通过某种方式获得性能测试中的测试结果,在本例中,我们关心的是请求的响应时间。
Jmeter 中使用监听器元件收集取样器记录的数据并以可视化的方式来呈现。Jmeter有各种不同的监听器类型,因为上HTTP请求,我们可在添加聚合报告,更为直观的查看测试结果。
添加聚合报告,右键点击Step1,在弹的菜单(添加—>监听器—>聚合报告)中选择聚合报告。
类似方式即可添加“察看结果树”和“jp@gc - PerfMon Metrics Collector”
七、运行脚本
添加完成聚合报告后,我们来运行脚本,稍后介绍聚合报告的参数。
1)线程组:
线程数:100
准备时长:20
循环次数:1
100个虚拟用户下聚合报告的运行结果:
100个虚拟用户下察看结果树的运行结果:
可以看到聚合报告中错误率是0.00%,察看结果树中返回的数据也是正确的,但是系统所在服务器CPU占有率过高,机器性能待提升
2)线程组:
线程数:500
准备时长:20
循环次数:1
500个虚拟用户运行了一段时间后程序直接报错
500个虚拟用户并发登录下,出现了很高的错误率,CPU消耗率几乎达到100%,鼠标都移动缓慢。
500个虚拟用户在并发时,察看结果树中,在高并发中间时间段,错误率几乎达到100%。
八、结果分析
500个虚拟用户并发登录时错误率较高,该网站需要在1000人同时登录成功。软件的性能明显不满足要求,需要提高。
聚合报告各字段说明:
Samples 样本 发送到服务器的样本数目
Average 平均值 总运行时间除以发送到服务器的请求数
Median 中值,一组数值中居于中间的数值 代表时间的数字,有一半的服务器响应时间低于该值而另一半高于该值
90%Line 一组数由小到大进行排列,找到他第90%个数(假如是12),那么这组数据中有90%的数将小于12
95%Line 一组数由小到大进行排列,找到他第95%个数(假如是12),那么这组数据中有95%的数将小于12
99%Line 一组数由小到大进行排列,找到他第99%个数(假如是12),那么这组数据中有99%的数将小于12
Min 最小值 服务器响应的最短时间
Max 最大值 服务器响应的最长时间
Error% 错误率 请求的错误百分比
Throughput 吞吐量(是指对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量(以比特、字节、分组等测量))
服务器每单位时间处理的请求数,注意查看是秒或是分钟。 请求数/时间
Received KB/sec 接受的每秒字节数
Send KB/sec 发送的每秒字节数
九、JMeter ServerAgent服务器资源监控插件
本文介绍对Linux服务器的服务进行压测时,使用jmeter serverAgent插件监控服务器资源。
1.插件准备
所需插件:
JMeterPlugins-Extras.jar
JMeterPlugins-Standard.jar
ServerAgent-2.2.1
插件下载地址:https://jmeter-plugins.org/install/Install/
下载后分别解压
将JMeterPlugins-Extras.jar 和 JMeterPlugins-Standard.jar 放到jmeter安装路径 apache-jmeter-5.1.1\lib\ext目录下
将ServerAgent-2.2.1解压包放到linux服务器opt目录下
2.环境准备:
2.1Linux服务器启动监控服务
运行命令./startAgent.sh 或 sh startAgent.sh 即可启动ServerAgent服务
注:ServerAgent服务端口号默认为4444,如若遇到端口被占用,则需关闭占用该端口的进程,或者改变ServerAgent服务的默认端口:
A:关闭占用4444端口的进程
关闭占用4444端口的8260进程后,再次启动ServerAgent服务,成功。
B:使用命令改变ServerAgent服务的默认端口
进入ServerAgent的目录,此时可以看到ServerAgent.jar
输入以下命令:
java -jar ./CMDRunner.jar --tool PerfMonAgent --udp-port 7777 --tcp-port 7777
同样的,7777端口也要设置防火墙规则以及使用telnet本地测试下是否可以访问
如若是阿里云服务器,需去官网特定开设一个端口号,否则会报错拦截
2.2本地测试是否能正常访问:
在cmd中运行 telnet ip 4444 也就等同于在浏览器中输入ip:4444
注:如若提示 “telnet不是内部或外部命令,也不是可运行的程序”
则需启动Telnet功能,参考:win10 解决telnet不是内部或外部命令的方案
3.资源监听
将jar包放到lib下后,jmeter的监听器就会多出一些监控插件,选择添加即可
添加监控项中的细项,如CPU、memory、磁盘I/O等信息
举个例子:现在有个需求,平均每秒有30个用户登录,设置持续请求接口,需要监控服务器的资源使用情况
Number of Threads:30
Ramp-up Period : 1
Loop Count:Forever