1. Linux上的jmeter安装
为了方便运行jmeter,本文使用linux压力机一台、mac电脑一台。两台设备上都需要安装ijmeter。jmeter版本和插件情况需要一致。
进行便捷的版本迁移:为了保证调试脚本和实际运行脚本的jmeter版本和插件安装情况一致,可以将mac上的jmeter整个打包上传到linux压力机上解压。
1.1. java版本查看
jmeter的运行需要基于java环境,可使用下面方式查看当前Linux系统上是否已安装JDK。
java -version
结果如下图,Linux系统已安装1.8版本JDK:
1.2. 上传Jmeter到Linux
如上文所述,将mac上的Linux打包上传到Linux系统并解压。mac系统上的jmeter需要确保已安装了压测所需的所有插件。如果mac上的jmeter进行了插件的变动并将新安装的插件应用于脚本,而Linux上的jmeter并没有安装该插件,脚本上传到Linux上将可能执行失败。
可使用lrzsz命令或Xterm工具上传。
在下图中,jmeter已上传到Linux并解压成功。因上传到是zip压缩包,使用unzip命令解压。
unzip apache-jmeter-5.4.3.zip
1.3. 配置环境变量
本步骤是为了更方便地使用jmeter命令,可省略,区别是配置完后使用jmeter,可以在任意目录下直接执行jmeter命令可启动程序,而未配置使用jmeter需要到jmeter的安装路径(bin目录下)执行jmeter的可执行程序。比如本文中jmeter安装路径为/root/tcmipresstest/apache-jmeter-5.4.3/bin,未配置的情况下执行jmeter则需要./root/tcmipresstest/apache-jmeter-5.4.3/bin/jmeter才行。简而言之,配置比不配置方便,建议配置。
执行下面的命令打开配置文件:
vi /etc/profile
打开该配置文件后输入“i”进入insert编辑模式。在文件中插入以下内容:
export JMETER_HOME=/root/tcmipresstest/apache-jmeter-5.4.3
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$JMETER_HOME/lib/logkit-2.0.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH:$HOME/bin
JMETER_HOME变量内容为jmeter安装目录的绝对路径(实际就是上文中解压后的文件夹路径),如上文所说,我的安装目录是/root/tcmipresstest/apache-jmeter-5.4.3。该路径需根据实际情况替换。
修改完后"esc"和":wq"保存并关闭页面。输入以下命令使配置生效。
source /etc/profile
进入bin文件夹下找到jmeter,查看jmeter可执行程序是否有可执行权限。如果没有,则需要执行chmod +x jmeter赋予权限。
输入以下命令,如果打印了jmeter的版本信息,说明配置完成:
jmeter -v
打印如下图:
2. 在Linux上使用jmeter
mac上的jmeter带有图形化界面,使用非常简单,而Linux上的jmeter无图形化界面,使用需要依靠命令行。我们先来了解一下jmeter相关命令。在下面一节中提供了jmeter命令大全供参考。
2.1. jmeter命令大全
短命令 | 长命令 | 描述 |
---|---|---|
–? | 打印命令行选项和退出 | |
-v | --version | 打印版本信息并退出 |
-p | --propfile <argument> | 要使用的JMeter属性文件 |
-q | --addprop <argument> | 额外的JMeter属性文件 |
-t | --testfile <argument> | 要运行的JMeter测试(.jmx)文件。“-t last”将加载最后使用的文件 |
-l | --logfile <argument> | 将文件到日志样本 |
-i | --jmeterlogconf <argument> | JMeter日志记录配置文件(log4j2.xml |
-j | --jmeterlogfile <argument> | JMeter运行日志文件(JMeter.log) |
-n | --nongui | 在非GUI模式下运行jmeter |
-s | --server | 运行JMeter服务器 |
-E | --proxyScheme <argument> | 设置用于代理服务器的代理方案 |
-H | --proxyHost <argument> | 设置用于JMeter的代理服务器使用 |
-P | --proxyPort <argument> | 设置JMeter的代理服务器端口使用 |
-N | --nonProxyHosts <argument> | 设置非代理主机列表(例如:*.apache.org | localhost) |
-u | --username <argument> | 为JMeter用于使用的代理服务器设置用户名 |
-a | --password <argument> | 设置JMeter使用的代理服务器的密码 |
-J | --jmeterproperty <argument>=<value> | 定义其他JMeter属性 |
-G | --globalproperty <argument>=<value> | 定义全局属性(发送到服务器)例如-Gport=123 或 -Gglobal.properties |
-D | --systemproperty <argument>=<value> | 定义其他系统属性 |
-S | --systemPropertyFile <argument> | 附加系统属性文件 |
-f | --forceDeleteResultFile | 如果在开始测试之前,请强制删除现有结果文件和Web报告文件夹 |
-L | --loglevel <argument>=<value> | [category=]level 例如:jorphan=INFO, jmeter.util=DEBUG or com.example.foo=WARN |
-r | --runremote | 启动远程服务器(如remote_hosts中的定义) |
-R | --remotestart <argument> | 启动这些远程服务器(覆盖remote_hosts) |
-d | --homedir <argument> | 使用JMeter主目录 |
-X | --remoteexit | 在测试结束时退出远程服务器(非GUI) |
-g | --reportonly <argument> | 仅从测试结果文件生成报表仪表板 |
-e | --reportatendofloadtests | 负载测试后生成报告仪表板 |
-o | --reportoutputfolder <argument> | 报表仪表板的输出文件夹,文件夹必须为空,否则会失败 |
2.2. 常用的jmeter命令
进行简单的jmeter场景测试时,比如说单压力机非分布式的单接口压测,可以直接执行以下命令:
jmeter -n -t xxx.jmx
在上面的命令中,-n表示非gui模式运行,-t xxx.jmx表示运行xxx.jmx测试计划。
在实际的测试中,可以使用其他命令来附加功能。如下:
jmeter -n -t xxx.jmx -l xxx.jtl -e -o xxx/xxx
执行以上命令,执行完成后,将生成xxx.jtl文件,以及在xxx/xxx目录下生成一个仪表盘报表。xxx.jtl可以下载到本地,使用gui模式查看(如在汇总报告、查看结果树等)如下图,选择jtl文件,点击浏览,数据就会被导入:
jmeter支持通过命令以jtl文件生成html报表。
jmeter -g 2h.jtl -e -o report/2hReport
该命令执行完成后,在report目录下生成一个2hReport文件夹,该文件夹中包含index.html文件,可在浏览器打开。
index.html文件不可以脱离文件夹中其他文件而存在,如果只下载index.html文件打开,网页测试报告不能正常显示。
在稳定性测试的场景中,经常使用以下命令:
nohup jmeter -n -t jmx/tcmi.jmx -l 2h.jtl > 2h_nohup.csv 2>&1 &
前面加上nohup,在长时间的稳定性测试中,可以保持后台运行,即使本地断开了和远程压力机的连接,脚本也可以继续在远程终端执行,不会挂起。
3. jmeter的GUI模式解析
在上文中,命令行执行jmeter用到了一个jmx文件,该文件是测试计划文件,在整个压测过程中起到重要作用,一般来说是在jmeter的图形化模式下生成的。也就是说,我先在mac的jmeter图形化模式中调试了脚本,得到jmx文件,再将该文件上传至linux压力机上执行。下面我们来看看如何使用jmeter的图形化模式,以便输出jmx文件,或者直接在jmeter图形化模式下运行压测。
3.1. mac启动jmeter图形化界面
mac中直接下载jmeter压缩包,解压,无需配置环境变量。解压后打开命令行终端,执行以下命令,即可启动jmeter。
sh /Users/zy/apache-jmeter-5.4.3/bin/jmeter
/Users/zy/apache-jmeter-5.4.3/bin/jmeter为我解压后的jmeter可执行文件路径。该执行文件放在解压文件夹下的bin目录中。
执行上述命令成功后,图形化界面即可开启。此时命令行打印如下:
不用管它。我们来看jmeter的图形化界面。
本界面为经过汉化的图形化界面,jmeter打开默认是英语,可以通过顶部菜单栏“选项”中的选择语言,来选择中文简体。
个人习惯使用英语。