VisualVM (JDK 6u7+) 整合多種監控功能,支持 JMX 和 jstatd 兩種遠程連接模式。本文詳細說明雙模式配置步驟,助力生產環境 JVM 監控。
jmxremote.password.template 為 jmx.pwd,末尾添加帳號密碼:jmx jmx-Dcom.sun.management.jmxremote.port=6789 -Dcom.sun.management.jmxremote.pwd.file=/jmx/jmx.pwd -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
VisualVM → 遠程 → 添加 host:6789,輸入帳號密碼連接。
/tmp/jstatd.java.policy:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
jstatd -J-Djava.security.policy=/tmp/jstatd.java.policy -J-Djava.rmi.server.logCalls=true
VisualVM 自動發現或手動添加主機,僅支持 CPU/內存/線程采樣、堆 Dump,不支持 JMX MBean 操作。
| 維度 | JMX | jstatd |
|---|---|---|
| 功能豐富度 | 完整 (MBean、熱點、GC、堆分析) | 基礎采樣 |
| 安全性 | 密碼認證、SSL 可選 | 策略文件控制 |
| 防火牆友好 | 固定端口,易穿透 | RMI 動態端口,難穿透 |
| 推薦場景 | 生產環境深度監控 | 快速巡檢、受限網絡 |