在linux上使用Jmeter进行压力测试

我们不可能在本地连接远程的服务数据库,等来测试服务的抗压能力,包括网络等一些问题,测试时不准确的,所以要在服务所在的linux服务器测试压力

将之前下载的zip包上传到linux服务器并配置环境变量

vi /etc/profile
在文件最后添加以下内容
export JMETER=/usr/local/jmeter
export PATH=${JMETER}/bin/:${PATH}
使环境变量生效
source /etc/profile
使用jmeter -v查看是否生效。

将在GUI下写好的请求保存为测试脚本

在我们之前的Http请求中加入聚合报告,保存并将test.jmx文件上传至要测试的服务器,我是将文件传到/home/test下

运行以下命令开始测试
jmeter -n -t test.jmx -l test.jtl
-n : 非GUI 模式执行JMeter
-t : 执行测试文件所在的位置及文件名
-r : 远程将所有agent启动用在分布式测试场景下,不是分布式测试只是单点就不需要-r
-l : 指定生成测试结果的保存文件, jtl 文件格式
-e : 测试结束后,生成测试报告
-o : 指定测试报告的存放位置
-o 指定的文件及文件夹,必须不存在 ,否则执行会失败,对应上面的命令就是resultReport文件夹必须不存在否则报错


运行时报如下异常:

Error in NonGUIDriver java.lang.RuntimeException: Could not find the TestPlan class!
解决办法:
在linux上使用Jmeter进行压力测试_第1张图片
具体原因参考该博客:http://www.jianshu.com/p/e12066ea13b1 然后重新保存测试计划,并执行!


执行完成之后会生成test.jtl文件,可以将该jtl文件下载本地,查看运行结果

在linux上使用Jmeter进行压力测试_第2张图片


也可以查看测试的聚合报告

在linux上使用Jmeter进行压力测试_第3张图片


上面遗留有一个问题,下载下来的jtl文件导入结果树中,我们并不能看到请求数据和响应数据

在linux上使用Jmeter进行压力测试_第4张图片

jmeter为了减轻客户机负担,没有默认把这些信息保存,如果想要保存,也可以,需要做出如下配置:
修改bin目录下的user.properties文件,追加配置:

jmeter.save.saveservice.output_format=xml
jmeter.save.saveservice.response_data=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.responseHeaders=true
性能测试建议还是不要开这些配置,会增加报告的大小

non-gui运行结果GUI查看,中文乱码:

在linux上使用Jmeter进行压力测试_第5张图片

JMeter结果树响应数据中文乱码解决办法:
修改bin目录下的user.properties文件,追加配置:
jmeter.save.saveservice.encoding=true
另外修改encoding编码,修改bin目录下的jmeter.properties文件,搜索“sampleresult.default.encoding”关键字,找到如下配置:
#The encoding to be used if none is provided (default ISO-8859-1)
#sampleresult.default.encoding=ISO-8859-1
将sampleresult.default.encoding注释删掉,并改成utf-8编码,即:
sampleresult.default.encoding=utf-8


你可能感兴趣的:(jmeter)