性能测试工具 jmeter 源码剖析:启动过程

杨杰 · 2020年10月27日 · 5230 次阅读

一、启动

1. windows 启动

当我们执行 jmeter.bat 时,启动如下的 jar 包:

2. linux 启动

当在 linux 执行 jmeter 时,启动如下的 jar 包:


从上述各截图中可得知,jmeter 启动时会调用 ApacheJMeter.jar 包,以下做详细解读

二、ApacheJMeter.jar 包


1. ShutdownClient 工具类

该类实现向命令行 Jmeter 进程发送 shutdown 命令

2. DynamicClassLoader 动态类加载器

该类实现动态加载 jmeter 所需的各种资源

3. NewDriver 类

众所周知 java 进程需要执行,需要在 class 文件中存在 main 方法,此处先寻找 main 方法

注:该类其他代码可自行阅读;

三、ApacheJMeter_core.jar 包

org.apache.jmeter.JMeter 类在该包中,下文将详细描述该类的调用过程

1. start 方法





2. startNonGui 方法

3. runNonGui 方法




即下图所示过程

在 jmeter 启动过程中涉及到如下的重要类:
NewDriver-----------------功能:jmeter 入口类,该类通过自定义类加载器加载 jmeter 的各 jar 包和库,并通过自定义类加载器加载 JMeter 类
JMeter----------------------功能:jmeter 参数解析、过程处理、压测启动类
CLArgsParser------------功能:jmeter 参数解析类,可仿照已有参数新增自定义参数
JMeterUtils----------------功能:jmeter 工具类,该类用来加载 properties 文件、设定全局变量等;
FileServer-----------------功能:jmeter 通过该类以线程安全的方式访问文件
HashTree------------------功能:jmeter 性能测试脚本解析生成的树结构,该类有个表兄弟 ListedHashTree 同样很重要
Summariser---------------功能:监听器,用来搜集所有的 SampleResult,在命令行中执行时默认 30 秒打印的指标数据,即该类的杰作
ResultCollector-----------功能:搜集所有 SampleResult 并输出到 jtl 文件中
JMeterEngine-------------功能:jmeter 引擎接口,无论单机、分布式引擎对象,均是该接口的实现
DistributedRunner-------功能:分布式执行时,初始化 slave、启动、停止各 slave

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册