jmeter在服务器上的压测命令
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jmeter在服务器上的压测命令相关的知识,希望对你有一定的参考价值。
参考技术A 最近接受到一个压测任务,对我们服务的单接口进行压测。我竟使用GUI模式压测了两轮,后来看到统计图中断崖式的趋势图,才发觉哪里有问题🤷♀️。果然不复习的话,知识忘得也快。
其实启动jmeter的时候,人家就告诉你:不要使用GUI模式进行负载测试,仅用于测试创建和测试调试!
所以jmeter的压测命令很简单:
jmeter -n -t [jmx文件] -l [结果文件] -e -o [输出文件夹的路径]
例如:
jmeter非GUI(cmd命令行)模式的压测和输出测试报告
1、非GUI模式的压测,和GUI有啥不同?
2、非GUI模式怎么搞?
大家打开jmeter的时候,都会看到这个界面:
注意看这句话:
Don\'t use GUI mode for load testing !, only for Test creation and Test debugging.
意思就是:不要使用GUI模式来进行压力测试!只有在脚本创建、调试的时候才用到它。
我们平常用jmeter跑脚本的时候,都是直接打开,然后新建线程组、http请求以及各种元件,然后一按“运行”,就哗啦啦跑起来。如果是进行常规的接口测试,几个http请求随便一测,那倒是没问题。但我们压力测试是绝对不能在界面(GUI)上面去跑的!
原因就是 GUI会消耗服务器部分的性能,导致压力测试数据不准确,或者导致GUI界面卡死,部分请求直接死掉,压测被迫中断。
非GUI模式就是直接通过cmd命令行去触发脚本运行,并且不用实时地渲染测试的数据,这样就能减少对电脑资源的消耗,如果我们是在自己的电脑上搭建服务器部署项目,那GUI模式估计会吃掉相当一部分的性能。
好,GUI和非GUI的区别搞明白了。下面讲如何进行非GUI的压测。
我是用自有的项目,一个PHP写的论坛网站进行测试。脚本已经录制好了,我们就用 注册 接口来试一下非GUI模式。
先对用户名、邮箱参数化了,CSV Set Data Config,存储了10000条数据,足够用了。我们先用1000条数据进行注册。线程数设置1000,Ramp-Up设置30秒,意思是1000个虚拟用户(Vuser),在30秒内加载完毕。
好,脚本设置好了。开搞之前,我们 先右键jmeter.bat,“以管理员身份运行”,不然后面会报错的。这个我也想不明白为什么,反正管理员身份运行就可以顺利执行。
jmeter打开之后,我们就不用管它。直接 win+R,打开cmd,先进入jmeter所在的bin目录下,注意,这个很重要!因为非GUI模式,命令行必须在bin目录下运行,如果你直接在cmd输入运行指令,它会告诉你 ‘jmeter不是内部命令’。
比如说我的jmeter的bin目录路径是E:\\jmeter5.0\\bin,如下图:
然后输入 jmeter -n -t ,然后把jmx脚本拖拽进来,就变成:
到这里其实我们已经完成了,直接回车就可以运行了。但我同时还想输出 测试结果和测试报告,可以在后面添加:-l E:\\jmeter5.0\\a_report\\result.jtl -e -o E:\\jmeter5.0\\a_report\\WebReport
其中E:\\jmeter5.0\\a_report\\result.jtl是我存放测试结果的路径,result.jtl就是测试结果的文件,当然你想把它命名成1.jtl或者2.jtl,test.jtl都行,反正测试结果文件的后缀名就是.jtl,
然后再添加 -e -o E:\\jmeter5.0\\a_report\\WebReport,这是用于生成HTML测试报告,E:\\jmeter5.0\\a_report\\WebReport 就是你想存入的路径,你可以随便设置。
好,下面就是见证奇迹的时候:
我们直接回车,
出现下面这个图,就说明已经在启动了,只需要耐心等它结束。
结束之后,可以看到一些测试数据也写在里面,比如最小响应时间Min、最大响应时间Max、错误率 Err 等等。
好,我们再打开已经保存好的测试结果和测试报告:
测试结果可以直接导入jmeter来查看的,
而测试报告,则是直接打开HTML文档:
至此,我们就已经讲完了,关于非GUI模式下压测,虽然我上面用的注册接口简单操作了一下,1000个Vuser,30秒加载完成,算不上是真正意义的压力测试,但是思路和步骤大致就如此。
-------分割线- - - -
注意事项:运行刚才那个命令行,有时候会报错: Error in NonGUIDriver java.lang.IllegalArgumentException: Report generation requires csv output format, check \' jmeter.save.saveservice.output_format\' property
注意画粗的那句话,意思就是测试报告的输出有问题
那我们就打开bin目录下的jmeter.properties文件,查找jmeter.save.saveservice.output_format,把后面的xml改为csv,即可。
以上是关于jmeter在服务器上的压测命令的主要内容,如果未能解决你的问题,请参考以下文章
jmeter非GUI(cmd命令行)模式的压测和输出测试报告