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

使用VisualVM访问本地Actuator JMX端点

解决JVisualVM连接Spring Boot Actuator JMX端点的问题

我来帮你排查并解决这个连接问题,先梳理下你当前配置里的潜在疏漏,再给出完整的修正步骤:

你当前配置的问题点

  • JVM参数格式错误:你在bootRun里把两个JMX参数写在了同一个字符串中,JVM会把整个字符串当成单个参数解析,导致参数完全不生效。
  • 未指定固定RMI端口:默认情况下RMI会随机分配服务端口,这会让JVisualVM无法稳定定位到JMX服务。
  • 连接地址可能存在格式问题:错误的JMX URL会导致连接失败,需要严格遵循标准格式。

修正后的完整配置步骤

1. 修复build.gradle的JVM参数配置

把JVM参数拆分成独立的数组元素,同时指定固定的RMI端口并关闭开发环境下的认证/SSL(生产环境请根据需求开启):

bootRun {
    jvmArgs = [
        "-Dcom.sun.management.jmxremote",
        "-Dcom.sun.management.jmxremote.local.only=false",
        "-Dcom.sun.management.jmxremote.port=9001",
        "-Dcom.sun.management.jmxremote.rmi.port=9001",
        "-Dcom.sun.management.jmxremote.authenticate=false",
        "-Dcom.sun.management.jmxremote.ssl=false",
        "-Djava.rmi.server.hostname=localhost"
    ]
}

参数说明:

  • jmxremote.port=9001:指定JMX RMI注册表的固定端口
  • jmxremote.rmi.port=9001:让RMI服务端口和注册表端口保持一致,避免随机端口带来的连接问题
  • java.rmi.server.hostname=localhost:明确RMI服务的主机名,避免本地地址解析异常

2. 完善Spring Boot的JMX端点配置

在application.properties(或application.yml)中添加以下配置,确保Actuator端点暴露到JMX:

spring.jmx.enabled=true
# 暴露所有Actuator端点到JMX,也可以指定具体端点比如health,metrics
management.endpoints.jmx.exposure.include=*

3. 用JVisualVM正确连接

启动应用后,按以下步骤操作:

  • 打开JVisualVM,右键点击左侧面板的「本地」→「添加JMX连接」
  • 在「连接地址」输入框中填入:service:jmx:rmi:///jndi/rmi://localhost:9001/jmxrmi
  • 取消勾选「需要SSL连接」(如果你没开启SSL的话)
  • 点击「确定」,连接成功后,展开左侧的MBean节点,就能在org.springframework.boot下找到所有暴露的Actuator端点。

额外排查小贴士

  • 确认9001端口未被其他进程占用:Linux/macOS可以用netstat -an | grep 9001,Windows用netstat -ano | findstr 9001检查。
  • 如果是远程连接,需要把java.rmi.server.hostname改成远程服务器的IP/域名,同时确保防火墙开放9001端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:31:23