什么是JMX?
什么是JMX,Java Management Extensions,即Java管理擴展,是一個為應用程序、設備、系統等植入管理功能的框架。JMX可以跨越一系列異構操作系統平台、系統體系結構和網絡傳輸協議,靈活的開發無縫集成的系統、網絡和服務管理應用,詳細內容可查看https://www.jianshu.com/p/8c5133cab858
JMX使用
在安裝JDK開發工具包后,在bin目錄中有jmc.exe、jvisualvm.exe、jconsole.exe,這三個工具都可以提供可視化界面來監控我們的Java程序運行狀況,既可以連接本地程序,也可以監控遠程環境,使用起來很方便,這里以jvisualvm.exe為例。
本地環境
在Java安裝bin目錄直接雙擊jvisualvm.exe啟動,就可以看到本地監控程序,有啟動的IDEA,如果有其他依賴於Java平台運行的程序也都會展示。

遠程環境
連接遠程環境,需要在Java程序啟動的時候添加以下參數
-Dcom.sun.management.jmxremote.port=server_port 遠程連接需要開放的端口
-Dcom.sun.management.jmxremote.ssl=false 禁止使用ssl連接
-Dcom.sun.management.jmxremote.authenticate=false 不使用安全認證
-Djava.rmi.server.hostname=server_ip 要連接的遠程主機的IP
然后啟動你的Java程序,可以添加在啟動參數文件中,也可以用下面方式啟動
java -Dcom.sun.management.jmxremote.port=server_port -Dcom.sun.management.jmxremote.ssl=false 省略... -jar ./your_jar
啟動遠程程序后,在本地啟動jvisualvm.exe,輸入以下信息就可以連接了

Linux在Tomcat中指定參數:在bin/catalina.sh中添加下列參數
CATALINA_OPTS="$CATALINA_OPTS
-Djava.rmi.server.hostname=你的主機
-Dcom.sun.management.jmxremote.port=需要被監控的端口,保證沒有被占用即可隨便指定
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
如果不能連接,檢查遠程服務是否啟動成功,查看遠程系統的防火牆是否開放端口,要確保你設置的端口沒有被占用。
