Linux中安装JMeter并执行压测

前言

最近在做性能测试,性能测试方案中要求使用Linux服务器做压力机,压力发起工具使用JMeter,所以需要在Linux中安装JMeter。

 

准备

Jmeter是Java开发的,需要依赖JDK环境,因此我们需提前安装好JDK。

CentOS 7.3 64位
JDK 1.8(可参考文章:Linux下安装JDK 1.8

 

下载JMeter安装包

Jmeter是Java开发的,需要依赖JDK环境,因此我们需提前安装好JDK。

Jmeter是开源的工具,我们直接到官网下载即可,本次安装的版本是 5.1.1

最新版本下载地址:https://jmeter.apache.org/download_jmeter.cgi
历史版本下载地址:https://archive.apache.org/dist/jmeter/binaries/

下载后缀为 .tgz 或 .zip 都是可以的,我们可以在Linux通过 wget 命令下载Jmeter安装包,或者下载后再传到Linux。

我这里下载的安装包版本是 apache-jmeter-5.2.1.tgz

 

安装JMeter

#新建jmeter文件夹
mkdir jmeter

#下载安装文件 或 上传已下载好的文件到jmeter目录下 
wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.2.1.tgz

#解压文件
tar -xzvf apache-jmeter-5.2.1.tgz

  本次解压的目录为:usr/local/jmeter/apache-jmeter-5.2.1

 

配置环境

#配置启动参数
#打开配置文件
vim /etc/profile

#将下列代码复制到文件的最后
export JMETER_HOME=/usr/local/jmeter/apache-jmeter-5.2.1
export PATH=${JMETER_HOME}/bin:$PATH

  添加好后保存,执行source /etc/profile,重新加载配置文件。最后,通过jmeter --version查看安装的Jmeter版本,验证安装成功。

 OK,到这里,Jmeter已经安装完成,可以开始使用了!

 

Linux中使用JMeter进行压测

1.在windows系统中设置好压测场景和数据,保存到jmx文件中

 2.将jmx文件上传到服务器jmeter的bin目录下

 

 3.执行压测命令

./jmeter.sh -n -t test.jmx -l result02.jtl

 

遇到的问题问题:    
1.在进行压力测试时,为了降低网络带宽对响应时间的影响,通常高并发时会采用在Windows上使用JMeter编写好测试脚本-xxx.jmx;将脚本上传到相同局域网的Linux服务器,使用JMeter对应命令进行压力测试的方法。测试有时会遇到如下报错:Error in NonGUIDriver java.lang.IllegalStateException: Could not find the TestPlan class!

 

 

 问题原因:

保存测试脚本时只保存了Testplan下的部分节点,导致生成的测试脚本只是“testplan”下面的某些元素,,不包括需要运行测试所需的“TestPlan”元素。

解决方案:
在保存测试脚本时,保存整个测试计划,以下两种方式保存测试脚本,可以避免上述报错产生。

1.在文件菜单中单击“保存测试计划”或“保存测试计划为”选项;

2.鼠标选中测试计划节点,直接点击工具栏上的“保存测试计划”按钮

问题2:执行jmeter -n -t xxx.jmx -l result.jtl时,提示如下错误

Error in NonGUIDriver java.lang.IllegalArgumentException: Problem loading XML from:'/usr/local/jmeter/apache-jmeter-5.2.1/bin/客户权益账单查询.jmx'.
Cause:
CannotResolveClassException: kg.apc.jmeter.threads.SteppingThreadGroup

Detail:com.thoughtworks.xstream.converters.ConversionException:
---- Debugging information ----
cause-exception : com.thoughtworks.xstream.converters.ConversionException
cause-message :
first-jmeter-class : org.apache.jmeter.save.converters.HashTreeConverter.unmarshal(HashTreeConverter.java:67)
class : org.apache.jmeter.save.ScriptWrapper
required-type : org.apache.jmeter.save.ScriptWrapper
converter-type : org.apache.jmeter.save.ScriptWrapperConverter
path : /jmeterTestPlan/hashTree/hashTree/kg.apc.jmeter.threads.SteppingThreadGroup
line number : 881
version : 5.2.1
-------------------------------
An error occurred: Error in NonGUIDriver Problem loading XML from:'/usr/local/jmeter/apache-jmeter-5.2.1/bin/客户权益账单查询.jmx'.
Cause:
CannotResolveClassException: kg.apc.jmeter.threads.SteppingThreadGroup

Detail:com.thoughtworks.xstream.converters.ConversionException:
---- Debugging information ----
cause-exception : com.thoughtworks.xstream.converters.ConversionException
cause-message :
first-jmeter-class : org.apache.jmeter.save.converters.HashTreeConverter.unmarshal(HashTreeConverter.java:67)
class : org.apache.jmeter.save.ScriptWrapper
required-type : org.apache.jmeter.save.ScriptWrapper
converter-type : org.apache.jmeter.save.ScriptWrapperConverter
path : /jmeterTestPlan/hashTree/hashTree/kg.apc.jmeter.threads.SteppingThreadGroup
line number : 881
version : 5.2.1
-------------------------------

原因分析:

脚本中使用了jp@gc - Stepping Thread Group,jmeter的文件中没有使用包含对应的插件包

解决办法:

上传插件包到lib/ext目录下,上传好后再执行jmeter -n -t xxx.jmx result.jtl,便能成功执行

 问题3:执行jmeter -n -t xxx.jmx -l result.jtl时,报java.lang.IllegalArgumentException: File Realtimequeryofrights.txt must exist and be readable

 

 原因分析:在windows中使用jmeter时,参数脚本路径是绝对路径,比如D:\apache-jmeter-5.2.1\bin,但是在Linux中这个路径是找不到的

解决办法:

用windows打开jmeter的脚本,自定义2个变量,分别为path_win和path_linux,然后将路径填充进去,当使用windows来跑脚本时,需要在CSV数据文件设置参数路径为${path_win},但要去Linux跑脚本时,需要改成${path_linux}

 

posted @ 2021-05-30 22:51  寒冰宇若  阅读(8560)  评论(0编辑  收藏  举报