当我们执行 jmeter.bat 时,启动如下的 jar 包:
当在 linux 执行 jmeter 时,启动如下的 jar 包:
从上述各截图中可得知,jmeter 启动时会调用 ApacheJMeter.jar 包,以下做详细解读
该类实现向命令行 Jmeter 进程发送 shutdown 命令
该类实现动态加载 jmeter 所需的各种资源
众所周知 java 进程需要执行,需要在 class 文件中存在 main 方法,此处先寻找 main 方法
注:该类其他代码可自行阅读;
org.apache.jmeter.JMeter 类在该包中,下文将详细描述该类的调用过程
即下图所示过程
在 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