无法使用 JStat 连接到远程 JVM



从 Jstat 文档中,jstat 可以连接到本地和远程 JVM。URI 可以形成

[protocol:][//]lvmid[@hostname[:port]/servername]

我有一个 JVM 在启用了 JMX 的服务器 (CentOS) 上运行 -

xyz   23878     1  0 Jun01 ?        04:37:00 java -Xms1g -Xmx1g -XX:NewSize=512m -Xloggc:../9301/logs/gc.log -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=../9301/logs/oom.log **-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=19301 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false** -jar ../0.1.14/xyz-0.1.14.jar -serviceName <name> -dataCenter <name> servicePort 9301

我能够使用JVisualVM从我的本地机器连接到JVM,它使用2步过程 -

  1. 提示通过默认端口 1099 上的 jstatd 连接添加远程计算机 ->我能够这样做,并且添加了服务器,证明 RMI 注册表可用
  2. 添加
  3. 服务器后,您可以在暴露的端口上向 JVM 添加 JMX 连接 ->成功,因为我的程序在端口 19301 上公开了 JMX,并且我能够查看详细信息

但是,我无法将 jstat 用于相同的目的。

运行jstat -gc process_id@servername给了我以下异常 -

RMI Registry not available at <servername>:1099
Connection refused to host: <servername>; nested exception is: 
java.net.ConnectException: Connection refused

检查了网络上的各种来源,他们谈论拥有jstatd 运行,我相信它正在运行,因为 VisualVM 能够添加机器。

问题:我应该如何在 jstat 命令中框定 [vmid] 部分进行连接

您需要在远程主机上运行jstatd才能使用jstat

运行RMI注册表是不够的。注册处仅用于注册各种RMI服务。-Dcom.sun.management.jmxremote选项启动jmxrmi服务(适用于 VisualVM),但 jstat 会查找JStatRemoteHost服务。

启动jstatd后,使用jstat -options process_id@servername命令监视远程 VM。

相关内容

  • 没有找到相关文章

最新更新