.
前言
JMX(Java Management Extensions)这项技术可用于监管Java应用。通常是由被监管程序开启JMX服务,再通过 JConsole、JMC、VisualVM之类的工具利用该JMX服务远程监管目标程序。
与 JProfiler 相比,这种方式显得很繁琐笨拙,更容易遇到各种奇怪的问题。JProfiler 只需提供目标服务所在机器的 root 密码并指定 jdk 所在目录就能对目标服务进行监控,且不需要重启目标服务,监控功能更丰富。所以只要公司钱够,就考虑买 JProfiler 吧。
但还是有些场景需要目标程序开启JMX服务。为了避开某些坑,特提供样例。
开启JMX服务(示例)
为目标Java程序添加以下启动参数:
Shell代码
-
-Djava.rmi.server.hostname=192.168.1.2 \
-
-Dcom.sun.management.jmxremote.port=6666 \
-
-Dcom.sun.management.jmxremote.ssl=false \
-
-Dcom.sun.management.jmxremote.authenticate=false \
需要重新启动程序,使这些设置生效
VisualVM 连接远程JMX服务(示例)