Jconsole 遠程鏈接Java服務

概述

Jconsole是一個相似Windows任務管理器的圖形化展現工具。能夠監控Java服務的CPU、內存、線程、對象等各項指標。html

Windows本地的Java服務能夠在Jconsole啓動的列表裏面直接選,就能夠鏈接上了;而大部分的Java服務都運行在沒有GUI的Linux環境下,沒法直接在Linux服務器上執行Jconsole命令。這時就須要在Windows上運行Jconsole遠程鏈接到Linux服務器的Java服務了。網上有不少的教程,但經過實測發現都有問題,沒法鏈接成功。經過不斷查找資料並驗證,終於找到了一個可行的配置方法,記錄以下: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"
  • 其中192.168.182.53是Java服務本機的IP地址;12345是Java對外服務的端口號。
  • -Dcom.sun.management.jmxremote.rmi.port=12345 這個很關鍵。緣由可參見:JCONSOLE的鏈接問題

除了8000正常端口外java還開了一個端口,而JConsole鏈接過來的是另外一個端口,並且重啓後這個端口是隨機的,每次啓動JVM都會變。tcpdump抓包發現每次都鏈接8000以後連另外隨機的端口。沒辦法暫時防火牆只好開高端口。bash

可能rmi.port參數就是所謂的**隨機端口**?(Java小白亂猜~)
  • 不須要更改/etc/hosts文件。

配置Java服務器的防火牆

容許其餘機器訪問本機的12345端口。服務器

測試環境

Java服務環境:jvm

  • OS: CentOS Linux release 7.0.1406 (Core)
  • JDK: 1.8.0_181

Jconsole 環境:tcp

  • OS:Windows10 1803
  • JDK: 1.8.0_172

參考

相關文章
相關標籤/搜索