1.为什么在linux下运行jmeter脚本?

答案:当然在windows下运行jmeter脚本也是可以的,但是因为linux系统的性能是优于Windows系统,我们在加载并发用户数时,是利用系统的线程加载出来的,而linux系统更能处理这些多线程问题,还有Linux运行jmeter脚本是用命令执行,而windows执行jmeter脚本是GUI运行,这样对比的话,纯命令跑脚本对性能影响最小,windows本身在用着,再加上jmeter的GUI,会导致windows系统的性能瓶颈,影响服务器最佳的性能测试结果,总之一句话:意思就是linux下运行jmeter脚本,消耗比windows小,加载的请求更多,响应更快。

2.操作步骤:

(1)首先我们需要在Linux系统上安装JDK,因为Jmeter是JAVA语言开发的,我们教学的虚拟机默认已经安装的JDK,不过是1.4版本,我们等会用的Jmeter版本是4.0,需要JDK1.8才能使用,所以我们先卸载之前的JDK(不卸载也行),再重新安装JDK并配置环境变量。

(2)检查我们的虚拟机JDK版本,输入命令:rpm -qa | grep java,这里检查到的JDK是1.4,有些可能搭建JAVA环境,查询出来是1.7,或者查询不到,都没关系。

Linux jemeter命令 linux运行jmeter脚本_Linux jemeter命令

(3)卸载1.4版本的jdk;
输入命令:rpm -e --nodepsjava-1.4.2-gcj-compat-1.4.2.0-40jpp.115

开始卸载,卸载完成再查看已没有

Linux jemeter命令 linux运行jmeter脚本_服务器_02


(4)去oracle官网下载1.8版本的JDK,这里就不介绍如何下载了,SVN已经有JDK1.8的rpm安装包,直接用rz上传到LINUX系统,下图是已经上传成功

Linux jemeter命令 linux运行jmeter脚本_服务器_03


(5)开始安装1.8版本的JDK,输入命令:rpm -ivh jdk-8u221-linux-i586.rpm

Linux jemeter命令 linux运行jmeter脚本_jmeter_04


(6)安装完成后,就要开始配置环境变量了,一般默认安装在/usr/Java/目录下,配置环境需要修改/etc/profile文件,所以输入命令:vi /etc/profile开始编辑,光标放在文件的最下面,输入以下内容后,保存并退出;

exportJAVA_HOME=/usr/java/jdk1.8.0_221-i586

exportJRE_HOME=/usr/java/jdk1.8.0_221-i586/jre

export CLASSPATH=.:Linux jemeter命令 linux运行jmeter脚本_Linux jemeter命令_05JRE_HOME/lib:Linux jemeter命令 linux运行jmeter脚本_jmeter_06JAVA_HOME/bin:Linux jemeter命令 linux运行jmeter脚本_服务器_07PATH

Linux jemeter命令 linux运行jmeter脚本_Linux jemeter命令_08


(7) 编辑完成后,使修改生效,输入命令:source /etc/profile,再输入命令:java -version查看JDK版本,这里我们看到是1.8了

Linux jemeter命令 linux运行jmeter脚本_压力测试_09


(8) 然后在Linux系统/root下创建了一个jmeter文件夹,接着我们把windows下的jmeter4.0的zip压缩包上传到该目录下

Linux jemeter命令 linux运行jmeter脚本_服务器_10

(9)输入命令:unzip apache-jmeter-4.0.zip,把jmeter解压到当前文件夹,解压完成之后,进入apache-jmeter-4.0文件夹的bin目录下,输入命令:sh jmeter.sh -v,就可以查看jmeter版本,这样就代表jmeter已经安装好了

Linux jemeter命令 linux运行jmeter脚本_linux_11


(10) 为了让我们在任何目录下都能使用jmeter,可以配置jmeter环境变量,输入命令:vi /etc/profile,继续编辑profile文件,在文件最后追加以下内容:

export JMETER_HOME=/root/jmeter/apache-jmeter-4.0
exportCLASSPATH=Linux jemeter命令 linux运行jmeter脚本_服务器_12JMETER_HOME/lib/jorphan.jar:Linux jemeter命令 linux运行jmeter脚本_jmeter_06JMETER_HOME/bin:Linux jemeter命令 linux运行jmeter脚本_jmeter_14HOME/bin
备注:因为我的jmeter文件放在/root/jmeter/apache-jmeter-4.0下,所以export JMETER_HOME的值是这样,每个人要根据自己jmeter的路径自定义设置;

Linux jemeter命令 linux运行jmeter脚本_压力测试_15

(11) 编辑完成后,使修改生效,输入命令:source /etc/profile,然后这样切换到root下,输入命令:jmeter -v,查看版本,如果出现下图,就说明jmetert环境变量已配置好。

Linux jemeter命令 linux运行jmeter脚本_服务器_16

(12)那么在linux下运行jmeter脚本,我们现在windows下把我们的脚本优化好,并且保存问JMX文件,最后上传到Linux服务器上,这里我拿一个登录的请求为例子,100个并发用户数,持续运行60s,然后保存为login.jmx文件(切勿添加监控服务器资源图表,否则运行会报错,我们可以用nmon工具监控服务器资源,有参数化csv文件如何运行,文档最后会给出解决方案)

Linux jemeter命令 linux运行jmeter脚本_压力测试_17

(13)在/root目录下创建一个test文件夹,切换到test目录下,把login.jmx文件上传上来,输入命令开始执行我们的jmx脚本,命令:jmeter -n -t login.jmx -l log.jtl ,开始执行;

参数说明:-n:以NoGUI方式运行脚本,-t:后面接脚本名称, -l:后面接日志名称,保存运行结果,上面命令意思在当前目录下,会生成一个log.jtl文件。

Linux jemeter命令 linux运行jmeter脚本_压力测试_18

(14)跑完之后,在test目录下,生成两个文件:一个是jmeter.log(jmeter运行日志),一个是我们的性能结果文件(log.jtl),我们用命令把log.jtl文件导入windows系统就能查看结果了;

Linux jemeter命令 linux运行jmeter脚本_jmeter_19

(15)在windows上打开jmeter,导入log.jtl,分别添加结果树,聚合报告,响应时间,TPS,查看测试结果,(注:结果树的请求内无信息,文档下面会给出解决方案)

解决linux下运行jmeter脚本,导出的jtl文件,用结果树查看无请求信息问题:

Linux jemeter命令 linux运行jmeter脚本_jmeter_20

Linux jemeter命令 linux运行jmeter脚本_压力测试_21

Linux jemeter命令 linux运行jmeter脚本_服务器_22


Linux jemeter命令 linux运行jmeter脚本_Linux jemeter命令_23

Linux jemeter命令 linux运行jmeter脚本_压力测试_24

解决方法:
在linux的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

JMX脚本中存在参数化CSV文件,如何执行:
如果需要参数化的话,CSV数据文件中,添加的路径url直接如下图填写,直接写入文件名;

然后把用户名.txt文件和脚本文件放入同一个目录下,这样执行就不会报错,如下图:

Linux jemeter命令 linux运行jmeter脚本_linux_25


Linux jemeter命令 linux运行jmeter脚本_服务器_26