如何在CentOS下执行jmeter jmx脚本并生成测试结果

本文详细介绍了如何在CentOS服务器上配置JDK和JMeter环境,包括环境变量设置、JMX脚本执行及常见问题解决,适用于性能测试工程师。

用jmeter做性能测试时,我们应尽量使性能测试结果更加准确,这样有时在测试时就需要在服务器执行性能测试,这里以centos系统为例讲解;假如,现在我需要在centos服务器上跑一下jmx的脚本,需要怎么做呢?如下:

一、环境变量

首先检查服务器的是否安装了jdk,没有的话这里有安装包(jdk-8u181-linux-x64.tar.gz,提取码:dres),下载下来将安装包放到/usr/java目录下进行解压(java目录需要自己创建),解压命令:

tar -zxvf jdk-8u181-linux-x64.tar.gz

解压完成后,最好将安装包删除掉,命令:

rm -f jdk-8u181-linux-x64.tar.gz

接下来配置jdk的环境变量:

1.编辑全局变量:

vim /etc/profile

2.进入文本编辑状态下,光标走到文件最后一行,键盘按下:i

3. 进入插入状态:
在文本的最后一行粘贴如下:

#java environment
export JAVA_HOME=/usr/java/jdk1.8.0_181
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin

注意:JAVA_HOME=/usr/java/jdk1.8.0_181,要改成你自己的路径

4.编辑完环境变量后按下键盘Esc
5.然后shift+q
6.最后输入字母x
7.在当前java路径下输入命令source /etc/profile让环境变量生效
8.验证环境变量是否添加成功:

java -version 

完成上述操作步骤之后,下面安装jmeter,安装包下载(apache-jmeter-3.3.zip,提取码:teiv),jmeter的安装包解压路径随意,进入到jmeter安装包的路径下,进行解压,命令:

unzip  apache-jmeter-3.3.zip

解压完后尽量也删除安装包(如果还有需要可以备份到其他目录,然后进行删除操作),这里配置环境的操作方法和jdk一样,就不重复讲解操作步骤了,下面说一下配置环境变量:

#jmeter environment
export JMETER_HOME=/home/dapp/apache-jmeter-3.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

/home/dapp/apache-jmeter-3.3是你自己的目录,粘贴时自行修改;

配置完成后,检查下环境变量是否配置成功:jmeter --version

二、执行脚本

1.centos系统下执行jmeter脚本(jmx):将windows下保存好的测试计划放到linux下jmeter安装路径bin目录下,然后执行命令-->

sh jmeter.sh -n -t 脚本名称.jmx -l 测试结果.jtl

ps:下面为一些常用命令说明:
-h 帮助 -> 打印出有用的信息并退出
-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
-t 测试文件 -> 要运行的 JMeter 测试脚本文件
-l 日志文件 -> 记录结果的文件
-r 远程执行 -> 启动远程服务
-H 代理主机 -> 设置 JMeter 使用的代理主机
-P 代理端口 -> 设置 JMeter 使用的代理主机的端口号 

2.等待执行完成后,会在bin目录下生成jtl结果文件,在windows下jmeter打开选择文件即可查看运行结果,如聚合报告、TPS;
注意事项:如果普通用户执行运行命令报错,则切换到root用户执行;

运行Jmeter报错NonGUIDriver,产生该错误的原因,目前有两种情况:
情况1,低版本的jmeter运行高版本的测试计划(测试计划是在高版本的jmeter上编制的);解决方法:使用相同或更高版本jmeter运行该计划;
情况2,使用第三方插件生成的测试计划,运行在没有该第三方插件的jmeter上;解决方法:在jmeter上安装插件或重新生成不包含插件的测试计划;

3.以上就是所有操作步骤,有问题欢迎留言交流;

<think> 首先,用户的问题是基于系统级指令,我需要确保回答符合所有规则:行内数学表达式用$...$,独立公式用$$...$$,LaTeX语法正确,使用中文回答,生成相关问题,在引用段落末尾添加引用标识如[^1]。 用户的问题是:"我想查找使用Java执行JMeterJMX脚本结果保存到JTL文件的方法 请问Java执行JMeterJMX脚本保存结果到JTL文件的实现方法"。翻译成英文是:"I want to find a method to execute JMeter JMX scripts using Java and save the results to a JTL file. Can you please provide the implementation method?" 从引用中,我有一些相关信息: - 引用[1]:描述在CentOS执行JMeter脚本的命令:`sh jmeter.sh -n -t 脚本名称.jmx -l 测试结果.jtl`。 - 引用[2]:提到使用jmeter-maven-plugin在Maven项目中运行JMX文件。 - 引用[3]:关于JMeter报告的需求,包括执行脚本的命令:`jmeter -n -t test.jmx -t test.jtl -e -o report`(注意:这里可能有笔误,应该是`-l test.jtl`)。 用户的需求是使用Java代码直接执行JMX脚本保存结果到JTL文件JMeter通常通过命令行执行,但用户想在Java程序中实现这一点。 在JMeter中,可以使用JMeter API来以编程方式运行测试。我需要回忆或基于知识库提供方法。 关键点: - JMeter提供了一个Java API,允许我们创建测试计划、运行测试收集结果。 - 核心类是`org.apache.jmeter.engine.StandardJMeterEngine`。 - 我们需要加载JMX文件测试计划),设置输出文件,然后运行引擎。 基本步骤: 1. 初始化JMeter引擎。 2. 加载JMX文件作为测试计划。 3. 配置结果收集器(例如,将结果保存到JTL文件)。 4. 运行测试。 5. 关闭引擎。 在Java代码中,这涉及到: - 添加JMeter依赖(例如,通过Maven)。 - 使用`StandardJMeterEngine`类。 - 设置属性或配置输出。 引用中没有直接提供Java代码的实现,所以我需要基于一般知识来构建回答。 确保回答结构清晰: 1. 解释方法。 2. 提供代码示例。 3. 解释代码。 4. 生成相关问题。 添加引用标识:引用来自用户提供的引用[1],[2],[3],但由于这些引用是给定的,我应该引用它们相关部分。 最后,生成相关问题。 回答大纲: - 介绍:使用JMeter API在Java中执行JMX脚本。 - 步骤: a. 添加JMeter依赖。 b. 编写Java代码加载JMX文件。 c. 设置结果保存到JTL文件。 d. 运行测试。 - 代码示例(用代码块)。 - 解释。 - 相关问题。 使用中文回答。 检查LaTeX:用户问题中没有数学表达式,所以可能不需要LaTeX,但如果有涉及,确保正确格式。这里可能不需要。 生成相关问题: - 基于主题,如优化、错误处理等。 最终回答结构: [回答主体] §§相关问题§§ [问题列表] </think> ### Java执行JMeterJMX脚本保存结果到JTL文件的实现方法 在Java中执行JMeterJMX脚本保存结果到JTL文件,可以通过JMeter的Java API实现。JMeter提供了`org.apache.jmeter.engine.StandardJMeterEngine`类,允许以编程方式加载和运行测试计划。以下是详细步骤和代码示例: #### 1. **添加JMeter依赖** 首先,在Maven项目中添加JMeter核心依赖(确保使用与JMX脚本兼容的JMeter版本,如5.6.2): ```xml <dependencies> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_core</artifactId> <version>5.6.2</version> </dependency> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_java</artifactId> <version>5.6.2</version> </dependency> </dependencies> ``` 如果使用Gradle或其他构建工具,需相应调整[^2]。 #### 2. **Java代码实现** 以下代码演示了如何加载JMX文件、设置JTL输出路径运行测试: ```java import org.apache.jmeter.engine.StandardJMeterEngine; import org.apache.jmeter.reporters.ResultCollector; import org.apache.jmeter.reporters.Summariser; import org.apache.jmeter.save.SaveService; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.collections.HashTree; import java.io.File; public class JMeterRunner { public static void main(String[] args) { // 1. 初始化JMeter环境 String jmeterHome = "/path/to/jmeter"; // 设置JMeter安装目录 JMeterUtils.setJMeterHome(jmeterHome); JMeterUtils.loadJMeterProperties(jmeterHome + "/bin/jmeter.properties"); JMeterUtils.initLocale(); // 2. 加载JMX测试计划文件 File jmxFile = new File("/path/to/your/test_plan.jmx"); HashTree testPlanTree = null; try { SaveService.loadProperties(); testPlanTree = SaveService.loadTree(jmxFile); } catch (Exception e) { e.printStackTrace(); return; } // 3. 配置结果收集器(保存到JTL文件) String jtlPath = "/path/to/results.jtl"; // 指定JTL输出路径 Summariser summariser = new Summariser(); // 可选:生成摘要 ResultCollector resultCollector = new ResultCollector(summariser); resultCollector.setFilename(jtlPath); // 设置JTL文件路径 testPlanTree.add(testPlanTree.getArray()[0], resultCollector); // 将收集器添加到测试计划 // 4. 创建运行JMeter引擎 StandardJMeterEngine jmeterEngine = new StandardJMeterEngine(); jmeterEngine.configure(testPlanTree); // 加载测试计划 jmeterEngine.run(); // 启动测试 // 5. 测试完成后关闭引擎(可选) jmeterEngine.exit(); } } ``` #### 3. **代码解释** - **初始化环境**:设置JMeter主目录和属性文件,确保API能正确加载。 - **加载JMX文件**:使用`SaveService.loadTree()`加载JMX测试计划到`HashTree`对象中。 - **结果收集**:通过`ResultCollector`指定JTL输出路径(`setFilename()`方法),文件格式默认为CSV或XML,可通过JMeter属性配置[^3]。 - **运行测试**:`StandardJMeterEngine`执行测试计划,结果自动写入JTL文件。 - **命令行等价操作**:此代码实现了类似命令行`jmeter -n -t test.jmx -l results.jtl`的功能[^1]。 #### 4. **注意事项** - **路径问题**:确保JMeter安装路径和文件路径正确,否则会报错。 - **依赖冲突**:如果项目中已有JMeter插件,需检查版本兼容性。 - **结果格式**:JTL文件内容可通过JMeter属性(如`jmeter.save.saveservice.output_format`)自定义为CSV或XML。 - **性能优化**:对于大规模测试,建议在代码中添加线程控制和资源清理逻辑。 通过上述方法,您可以直接在Java应用中集成JMeter测试,适用于自动化测试流水线或CI/CD场景[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值