Apache Ignite自定义Yardstick Benchmark编译后无法生效的问题咨询
问题描述
为开展性能评估,采用Apache Ignite的Yardstick Benchmark工具,修改了IgnitePutGetBenchmark.java源码并编译,但运行基准测试时修改未生效,具体操作如下:
- 源码文件路径:
$ vi ~/apache-ignite-2.14.0-bin/benchmarks/sources/src/main/java/org/apache/ignite/yardstick/cache/IgnitePutGetBenchmark.java - 编译操作:
$ cd ~/apache-ignite-2.14.0-bin/benchmarks/sources && mvn package(编译成功) - 生成的class文件路径:
~/apache-ignite-2.14.0-bin/benchmarks/sources/target/classes/org/apache/ignite/yardstick/cache/IgnitePutGetBenchmark.class - 运行命令:
$ bin/benchmark-run-all.sh config/benchmark-sample.properties,但修改的代码(如添加的println语句)未生效,仍执行默认版本。
咨询以下两个问题:
- 基准测试的正确编译方式;
- 如何运行已应用修改代码的基准测试。
解决方案
1. 基准测试的正确编译方式
编译时需确保将修改后的代码打包成可被基准测试脚本识别的jar包,具体步骤:
- 进入基准测试源码目录:
cd ~/apache-ignite-2.14.0-bin/benchmarks/sources - 执行Maven构建命令,清理旧编译产物并打包:
mvn clean package- 执行完成后,会在
target目录下生成包含修改后代码的jar文件(通常命名为ignite-yardstick-2.14.0.jar)
- 执行完成后,会在
2. 运行修改后代码的基准测试
默认的benchmark-run-all.sh脚本会优先加载Ignite安装目录自带的基准测试jar,而非你编译的自定义版本,可通过以下两种方式解决:
方法一:替换原有基准测试jar
- 找到Ignite安装目录中默认的基准测试jar,路径通常为:
~/apache-ignite-2.14.0-bin/libs/ignite-yardstick-2.14.0.jar - 将你编译生成的jar(
~/apache-ignite-2.14.0-bin/benchmarks/sources/target/ignite-yardstick-2.14.0.jar)复制并替换掉原有jar文件 - 重新运行
bin/benchmark-run-all.sh config/benchmark-sample.properties即可加载修改后的代码
方法二:调整脚本的类加载优先级
- 编辑
bin/benchmark-run-all.sh脚本,找到类路径(CLASSPATH)相关配置项 - 将你编译生成的
target/classes目录或自定义jar的路径添加到CLASSPATH的最前端,确保优先加载修改后的类- 示例修改:
CLASSPATH=~/apache-ignite-2.14.0-bin/benchmarks/sources/target/classes:$CLASSPATH
- 示例修改:
- 保存脚本后,重新执行基准测试命令即可
内容的提问来源于stack exchange,提问作者Yunkeuk Kim
相关产品推荐
相关产品推荐

