You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JMH遇到transport error 202连接拒绝问题求助

JMH运行时JDWP连接拒绝错误(AGENT_ERROR_TRANSPORT_INIT)的解决方法

错误原因

当JMH通过forks(1)启动新的测试VM时,会默认继承当前运行环境的JDWP调试参数。新VM尝试连接调试端口时,要么端口被当前VM占用,要么没有调试器监听该端口,从而触发Connection refused和AGENT_ERROR_TRANSPORT_INIT错误。在GraalVM 11 + Gradle 6.8.3的组合下,这种参数继承行为会直接导致问题。

解决方案

方法1:修改JMH配置,禁用调试参数传递

在OptionsBuilder中添加参数,强制关闭JMH的调试传递行为:

public static void main (String[] args) throws RunnerException {
    var opt = new OptionsBuilder()
            .include(Sample_helloworld.class.getName())
            .forks(1)
            .jvmArgs("-Djmh.debug.disable=true") // 关键配置
            .build() ;

    new Runner(opt).run() ;
}

方法2:在Gradle中移除调试VM参数

如果通过Gradle的run任务启动测试,修改Gradle配置,从Java执行任务中移除调试相关的参数:

tasks.withType(JavaExec) {
    jvmArgs.removeAll { it.startsWith("-agentlib:jdwp") }
}

方法3:临时关闭fork模式(不推荐)

将forks(1)改为forks(0),让JMH直接在当前VM运行测试。但这种方式会影响基准测试的准确性(当前VM的运行状态会干扰测试结果),仅用于临时排查问题:

var opt = new OptionsBuilder()
        .include(Sample_helloworld.class.getName())
        .forks(0) // 不启动新VM
        .build() ;

验证

修改配置后重新运行测试,若控制台不再输出transport error 202和AGENT_ERROR_TRANSPORT_INIT相关日志,说明问题解决。

内容的提问来源于stack exchange,提问作者L Jackie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 08:01:41