Jconsole是一個相似Windows任務管理器的圖形化展現工具。能夠監控Java服務的CPU、內存、線程、對象等各項指標。html
Windows本地的Java服務能夠在Jconsole啓動的列表裏面直接選,就能夠鏈接上了;而大部分的Java服務都運行在沒有GUI的Linux環境下,沒法直接在Linux服務器上執行Jconsole命令。這時就須要在Windows上運行Jconsole遠程鏈接到Linux服務器的Java服務了。網上有不少的教程,但經過實測發現都有問題,沒法鏈接成功。經過不斷查找資料並驗證,終於找到了一個可行的配置方法,記錄以下:java
JAVA_OPTS= JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.182.53" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.rmi.port=12345" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.local.only=false"
除了8000正常端口外java還開了一個端口,而JConsole鏈接過來的是另外一個端口,並且重啓後這個端口是隨機的,每次啓動JVM都會變。tcpdump抓包發現每次都鏈接8000以後連另外隨機的端口。沒辦法暫時防火牆只好開高端口。bash
可能rmi.port參數就是所謂的**隨機端口**?(Java小白亂猜~)
容許其餘機器訪問本機的12345端口。服務器
Java服務環境:jvm
Jconsole 環境:tcp