使用 Java Mission Profiler 监控远程 JVM
Monitor remote JVM with Java Mission Profiler
我在 Ubuntu 服务器 (14.04.1 LTS) 上从 Java Mission Control 运行 在 OSX 10.10.2[=16= 上访问 JVM 时遇到问题]
我读过这个问题: 但它对我没有帮助。
我尝试通过互联网访问服务器,并在路由器上为 TCP 和 UDP 端口 7091 启用了端口转发,指向服务器的本地接口。这个端口转发适用于其他服务,所以我很确定这部分没有问题。
Java 服务器上的版本是:
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)
我这样在服务器上启动 JVM:
java -Xms2048M -Xmx4096M
-XX:+UnlockCommercialFeatures
-XX:+FlightRecorder
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=7091
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.registry.ssl=false
com.example.MyServer
-arg1 XXX
-arg2 YYY
-arg3 ZZZ
(我玩过很多不同的 -Dcom.sun.management... 参数,这是最新的尝试)
在 OSX 我的 java 版本是:
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)
任务控制版本为 5.3.0
我愿意
File - Connect - Create a new connection
enter Host: DNS name of remote router <I know this is correct>
Port: 7091
当我执行 "Test Connection" 时出现错误超时。
(我已经在服务器上打开端口 7091 使用:"sudo ufw allow 7091"。我需要打开任何其他端口吗?)
如何进行???
设置 -Djava.rmi.server.hostname=
可能会有所帮助
您不需要明确设置 -Dcom.sun.management.jmxremote.rmi.port=7091,它应该默认与 com.sun.management.jmxremote.port 相同,但只是为了确保您也可以设置它...
我终于找到了正确的配置:
$javabin -Xms2048M -Xmx4096M $GCLOG \
-XX:+UnlockCommercialFeatures \
-XX:+FlightRecorder \
-Djava.rmi.server.hostname=myhost.example.com \
-Dcom.sun.management.jmxremote=true \
-Dcom.sun.management.jmxremote.port=7091 \
-Dcom.sun.management.jmxremote.rmi.port=7091 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.net.preferIPv4Stack=true \
com.example.MyServer -arg1 XXX -arg2 YYY -arg3 ZZZ
重要的部分是 java.rmi.server.hostname=myhost.example.com 部分,其中 myhost.example.com 必须解析为路由器的外部接口。
另外,
-Dcom.sun.management.jmxremote.port=7091 \
-Dcom.sun.management.jmxremote.rmi.port=7091 \
..我只需要转发路由器中的那个端口。
我不确定 preferIPv4 是否重要,但现在我不在乎,它有效!!!
我在 Ubuntu 服务器 (14.04.1 LTS) 上从 Java Mission Control 运行 在 OSX 10.10.2[=16= 上访问 JVM 时遇到问题]
我读过这个问题:
我尝试通过互联网访问服务器,并在路由器上为 TCP 和 UDP 端口 7091 启用了端口转发,指向服务器的本地接口。这个端口转发适用于其他服务,所以我很确定这部分没有问题。
Java 服务器上的版本是:
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)
我这样在服务器上启动 JVM:
java -Xms2048M -Xmx4096M
-XX:+UnlockCommercialFeatures
-XX:+FlightRecorder
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=7091
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.registry.ssl=false
com.example.MyServer
-arg1 XXX
-arg2 YYY
-arg3 ZZZ
(我玩过很多不同的 -Dcom.sun.management... 参数,这是最新的尝试)
在 OSX 我的 java 版本是:
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)
任务控制版本为 5.3.0
我愿意
File - Connect - Create a new connection
enter Host: DNS name of remote router <I know this is correct>
Port: 7091
当我执行 "Test Connection" 时出现错误超时。
(我已经在服务器上打开端口 7091 使用:"sudo ufw allow 7091"。我需要打开任何其他端口吗?)
如何进行???
设置 -Djava.rmi.server.hostname=
可能会有所帮助您不需要明确设置 -Dcom.sun.management.jmxremote.rmi.port=7091,它应该默认与 com.sun.management.jmxremote.port 相同,但只是为了确保您也可以设置它...
我终于找到了正确的配置:
$javabin -Xms2048M -Xmx4096M $GCLOG \
-XX:+UnlockCommercialFeatures \
-XX:+FlightRecorder \
-Djava.rmi.server.hostname=myhost.example.com \
-Dcom.sun.management.jmxremote=true \
-Dcom.sun.management.jmxremote.port=7091 \
-Dcom.sun.management.jmxremote.rmi.port=7091 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.net.preferIPv4Stack=true \
com.example.MyServer -arg1 XXX -arg2 YYY -arg3 ZZZ
重要的部分是 java.rmi.server.hostname=myhost.example.com 部分,其中 myhost.example.com 必须解析为路由器的外部接口。
另外,
-Dcom.sun.management.jmxremote.port=7091 \
-Dcom.sun.management.jmxremote.rmi.port=7091 \
..我只需要转发路由器中的那个端口。
我不确定 preferIPv4 是否重要,但现在我不在乎,它有效!!!