JMX (Java Management Extensions) 是 WebLogic 管理的核心 API。通過 MBean (Managed Bean) 可實時查詢配置、運行時指標、修改配置,控制台與第三方監控工具均基於此構建。對開發者而言,JMX 是深入掌握應用運行狀態的「瑞士軍刀」。
| 層面 | 監控對象 | 關鍵指標 | 業務價值 |
|---|---|---|---|
| 靜態資源 | FileServlet | 服務耗時、HEAD 請求比例 | 驗證瀏覽器緩存效果,優化靜態資源分發 |
| 動態頁面 | 各 Servlet | 平均響應時間、吞吐量、錯誤率 | 定位性能瓶頸,容量規劃 |
| 會話 Bean | Stateful/Stateless | 緩存命中率、池大小、激活/鈍化頻率 | 調優 EJB 池與緩存參數 |
| 實體 Bean | CMP/BMP | 加載/存儲次數、查詢緩存 | 優化持久化策略 |
| JMS 系統 | Queue/Topic | 消息積壓、吞吐量、消費者數 | 背壓監控、擴容決策 |
| JDBC 連接池 | ConnectionPool | 活躍/空閒連接、等待線程、洩漏堆棧 | 預防連接耗盡、定位洩漏代碼 |
import javax.management.*;
import javax.naming.*;
public class JMXMonitor {
public static void main(String[] args) throws Exception {
// 1. 獲取本地 MBeanHome
MBeanHome home = (MBeanHome) new InitialContext()
.lookup(MBeanHome.LOCAL_JNDI_NAME);
// 2. 查詢所有 JDBC 連接池運行時 MBean (類型名 + "Runtime")
Set pools = home.getMBeansByType("JDBCConnectionPoolRuntime");
for (Object obj : pools) {
JDBCConnectionPoolRuntimeMBean pool = (JDBCConnectionPoolRuntimeMBean) obj;
System.out.println("Pool: " + pool.getName());
System.out.println(" Active: " + pool.getActiveConnectionsCurrentCount());
System.out.println(" Idle: " + pool.getIdleConnectionsCurrentCount());
System.out.println(" Waiters: " + pool.getWaitingForConnectionCurrentCount());
System.out.println(" Leak Stack: " + pool.getConnectionLeakProfile()); // 洩漏堆棧
}
}
}
關鍵技巧: 配置類 MBean 類型名如 JDBCConnectionPool;運行時監控類型名加後綴 Runtime(如 JDBCConnectionPoolRuntime)。
適合腳本集成、運維巡檢,無需編寫 Java 代碼。
# 查看所有 JDBC 連接池配置(易讀格式)
java weblogic.Admin -username system -password <pwd> -url t3://host:port \
GET -pretty -type JDBCConnectionPool
# 查看運行時狀態
java weblogic.Admin -username system -password <pwd> -url t3://host:port \
GET -pretty -type JDBCConnectionPoolRuntime
# 修改屬性(如調大最大連接數)
java weblogic.Admin -username system -password <pwd> -url t3://host:port \
SET -type JDBCConnectionPool -property MaxCapacity -value 100
# 其他:PING 服務器、列出 JNDI 樹、重置連接池、關閉服務器
config.xml,屬性修改即時生效但多為運行時行為,重啟/重新部署後可能復原。weblogic.Deployer 或控制台,保證變更持久化與一致性。MBeanHome.LOCAL_JNDI_NAME (本地) / ADMIN_JNDI_NAME (遠程)。*Runtime、*Config)。weblogic.Admin 探索 MBean 屬性結構,再編寫監控代碼。JMX 將 WebLogic 內部狀態透明化,無論是開發調優、運維巡檢還是自動化運維,都是不可或缺的利器。掌握「編程式查詢 + 命令行巡檢」雙模式,讓監控無死角。