首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

JBoss 遠程監控 Java 記憶體實戰:JConsole 與 JVisualVM 配置全記錄

     編輯:Java 綜合教學

JBoss 遠程監控 Java 記憶體實戰:JConsole 與 JVisualVM 配置全記錄

背景

專案部署客戶端運行約一個月後出現 Java 記憶體溢出,需遠程實時監控 JVM 記憶體、線程、類載入等指標。本文記錄在 RedHat 6.0 + JDK 1.6 + JBoss 5.1 環境下的完整配置過程。

JDK 1.6 內建可視化工具簡介

  • JConsole:基於 JMX API,提供記憶體、線程、類載入、MBean 等實時監控。
  • JVisualVM:NetBeans 衍生專案,JDK 6u7 起內建(bin/jvisualvm.exe),支援 CPU/記憶體分析、GC 物件追蹤、堆棧反向查詢。

遠程監控配置(無認證模式)

修改 JBoss bin/run.sh,在 JAVA_OPTS="-Dprogram.name=$PROGNAME $JAVA_OPTS" 之後追加:

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=9999"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.1.250"

關鍵點:

  1. 9999 為監控端口,確保未被佔用(netstat -an / lsof -i:9999 驗證)。
  2. 防火牆需放行 9999 端口。
  3. java.rmi.server.hostname 必須設為伺服器實際 IP,否則客戶端無法連線。

啟動 JBoss 並連線

./run.sh -b 192.168.1.250 &   # -b 綁定地址,0.0.0.0 允許所有

本機啟動 %JAVA_HOME%\bin\JConsole,遠程進程輸入 192.168.1.250:9999 即可連線。

帶認證模式(生產推薦)

  1. 複製 $JAVA_HOME/jre/lib/management/jmxremote.password.template 為 jmxremote.password,取消註釋 monitorRole QED(可自定義帳密)。
  2. 同步修改 jmxremote.access 對應權限。
  3. 在 run.sh 追加:
    JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
    JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.password.file=/usr/java/jdk1.6/jre/lib/management/jmxremote.password"
    
  4. 賦權限:chmod 600 jmxremote.password,否則啟動報錯「Password file read access must be restricted」。

JVisualVM 連線方式

左側樹狀結構 Remote → 右鍵添加 IP → 右鍵該 IP 選 添加 JMX 連線 → 填入端口、帳密即可。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved