一个我个人的jmeter测试流程和命令

发布时间 2023-11-20 17:19:52作者: 青索
1,准备

首先是下载jmeter和插件,包含Custom Thread Groups(多样化的线程组,之后细说),PerfMon(监控服务器信息)

接下来部署测试应用,数据库和jmeter到不同的三个服务器上,启动测试应用和数据库,确保功能正常

 2,perfmon

使用perfmon需要下载两个部分,一个是jmeter的插件,直接从jmeter的Plugins Manager下载即可,首次使用jmeter可能没有自带的Plugins Manager,可以从这里下载jar包,然后放到jmeter根目录下的lib/ext目录中,插件下载完成后在jmeter的主界面上创建一个Thread Group,然后在Thread Group上依次点右键->add->Listerner->jp@gc - PerfMon Metrics Collector即可添加一个监控页面,到这里说明插件安装成功了

 

第二个是服务器上的监控端,叫做Server Agent,目前的版本是2.2.3,以后大概率也不会更新了,可以从这里下载。

下载完成后解压到测试应用所在服务器,位置随意,不要解压错服务器了,在解压出来的目录中执行startAgent.sh即可启动,它的默认端口是4444,启动成功的情况应该是这样的

如果要修改默认端口,执行

./startAgent.sh --udp-port 0 --tcp-port 3450

即可修改默认端口,这个命令的意思是不启用udp端口,修改tcp端口到3450

我个人倾向于让进程后台运行,前台还可以做其他事情,也不需要开更多的ssh窗口,所以我执行的命令是

nohup ./startAgent.sh > nohup.out &

可以将输出重定向到当前目录下的nohup.out文件,启动成功后就不用管了。

3,脚本

接下来是写jmeter的测试脚本,我个人的习惯是在Windows中用jmeter gui写脚本,调试好了放到jmeter所在服务器上面运行。

首先是我个人推荐的Custom Thread Groups插件,同样在Plugins Manager中下载安装,安装好了在Thread Group中有更多选择

我个人最倾向于使用jp@gc - Stepping Thread Group,如图,这个Thread Group的意思是一共开启2000个线程,但不是一开始就是2000个线程,而是启动后先等10秒,然后启动200个线程;接下来每隔10秒钟启动200个线程,直到总共启动2000个线程为止,然后持续运行900秒,运行完毕后每秒停止50个线程,直到所有线程全部停止

设置Thread Group之后就可以开始写脚本并调试了

脚本写完不要忘了添加上面提到的jp@gc - PerfMon Metrics Collector监控,否则是收集不到服务器信息的,点击Servers to Monitor下面的Add Row添加监控信息,包括监控服务器也就是启动了AgentServer的服务器IP,端口和监控项,如果没有指定端口就填默认端口4444,监控项可以选择,我个人一般选择CPU,内存,网络IO和磁盘IO,以及不要忘了把结果输出到文件,在Write results tofile / Read from file中添加文件名,不添加路径的话,就是当前目录

 

 4,运行

上传脚本和jmeter到服务器上就可以运行了,但是需要注意的是,记得要把插件的jar包一起上传,因为Linux服务器上一般是没有图形界面的,无法通过Plugins Manager下载插件

一般情况下我个人用 ./jmeter -n -t test.jmx -l result.jtl 命令执行测试

-n,表示无gui

-t,后面接测试脚本文件,一般情况下是jmx文件

-l,表示将测试结果输出到文件,文件扩展名一般情况下是jtl

如果没有报错,那么控制台输出应该类似于这样

执行完成后当前目录下应该有两个结果文件,一个是result.jtl,这个是测试的结果,一个是perfmon.jtl,是上一节添加的服务器监控数据结果,如果还要继续运行其他测试,记得把perfmon.jtl文件改名,避免使用了相同文件名,内容被覆盖

5,结果

我个人习惯是把测试结果转成html文件后再传到本地电脑写测试报告,因为测试结果jtl文件动辄好几个G大小,从远程服务器下载黄花菜都凉了,所以用这个命令将result.jtl转换成html

./jmeter -g result.jtl -o html/result/

 -g,后面参数接测试结果文件,一般情况下是jtl文件

-o,表示将结果输出到目录,如果没有会自动创建,包含子目录

执行完成后,控制台没有输出,当前目录下会生成一个html目录,目录中包含一个result目录,result目录中包含一个完整的html页面,将整个result目录打包成zip文件

zip -q -r result.zip html/result/

这个命令会将当前目录下的html/result目录打包成一个result.zip压缩文件,如果不希望压缩文件中有太多层级,进入html目录压缩result目录也是可以的。

下载result.zip文件并解压,然后双击打开index.html文件,就能看到测试结果了

 Charts里面可以看到各种图表,包括tps,这里就不挨个看了,各取所需

然后是perfmon.jtl,虽然文件格式相同,但是不能用这种方式转换成html页面,这个就只能下载到本地电脑,然后用jmeter打开。

跟上面的步骤一样,也是创建一个jp@gc - PerfMon Metrics Collector,但是不用填其他信息,直接从Write results tofile / Read from file下面找到Browse按钮,选择下载下来的perfmon.jtl,就能看到监控信息了

 忽略报错,这个不用管它,结果大概类似上面的截图,可以从Rows中勾选只显示某一项监控,更多的使用方法,可以参考插件文档,这里就不多说了。

以上就是我个人的一个大致流程,最重要的测试指标,服务器搭建,结果分析等就见仁见智了,毕竟没有统一标准,欢迎大家一起沟通讨论。