JMeter在Linux下运行测试
安装JDK
首先安装JDK,并正确配置环境变量。
- 下载jdk并上传至linux服务器
上传并解压jdk压缩包jdk-8u231-linux-x64.tar.gz,建议把软件都安装到/usr/下,如/usr/java/jdk1.8.0_231。
tar -zxvf jdk-8u231-linux-x64.tar.gz
- 配置java环境变量
1)用vim编辑器打开/etc/profile文件,在文件尾部加入环境变量的定义
#JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_231
export PATH=$PATH:$JAVA_HOME/bin
2)输入如下命令使配置立即生效
source /etc/profile
3)查看java版本
[root@h03 /]# java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)
即安装成功!
安装JMeter
1)将Jmeter的安装包(直接使用windows下的zip压缩包都行)apache-jmeter-5.4.1.zip上传至Linux的/usr/local/目录下,解压。
[root@h03 bin]# unzip apache-jmeter-5.4.1
2)编辑/etc/profile文件,配置Jmeter的环境变量
# set jmeter environment
export JMETER_HOME=/tmp/test_tmp/apache-jmeter-5.4.1
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH
3)输入如下命令使配置立即生效
[root@h03 bin]# source /etc/profile
4)给jmeter文件赋可以执行权限
[root@h03 bin]# chmod 777 jmeter
5)查看jmeter版本号
[root@h03 jmeter_script]# jmeter --version
_ ____ _ ____ _ _ _____ _ __ __ _____ _____ _____ ____
/ \ | _ \ / \ / ___| | | | ____| | | \/ | ____|_ _| ____| _ \
/ _ \ | |_) / _ \| | | |_| | _| _ | | |\/| | _| | | | _| | |_) |
/ ___ \| __/ ___ \ |___| _ | |___ | |_| | | | | |___ | | | |___| _ <
/_/ \_\_| /_/ \_\____|_| |_|_____| \___/|_| |_|_____| |_| |_____|_| \_\ 5.4.1
Copyright (c) 1999-2021 The Apache Software Foundation
即安装成功!
运行JMeter
在Windows上调试好的脚本,上传到Linux环境,使用下面命令执行脚本
jmeter -n -t TB_bigdata_10_100.jmx -l jmeter_result/report.jtl
后台运行可以关闭窗口
# 后台运行
nohup jmeter -n -t TB_bigdata_10_100.jmx -l jmeter_result/report.jtl &
生成HTML报告
将测试生成的report.jtl文件导出到Windows平台下,使用下面命令可以生成HTML报告
jmeter -g report.jtl -o report
HTML报告生成与详细介绍可参考下面文章
https://blog.csdn.net/Mrlijie00/article/details/120430880
注意事项
csv配置文件问题
由于Windows和Linux系统的文件路径的问题,导致csv文件无法正常读取
解决方法:
前提:
- 我们的 CSV 文件必须在 Jmeter 的 bin 目录下创建,然后再添加自己要的数据
- Jmeter 必须从 bin 目录下启动,否则会有问题(下面说)
具体操作:
在CSV Data Set Config中设置File name如下图所示
${__P(user.dir,)}${__P(file.separator,)}+filename
${__P(user.dir,)}: 获取当前启动目录,所以要对应前面的前提条件
${__P(file.separator,)}: 获取当前系统的路径分隔符
新知识备注:
linux跳板机
ssh ip 跳转到指定内网
rz 传文件到服务器上
sz filename从服务器传文件出去
${__P(file.separator,)}:**获取当前系统的路径分隔符