ps:嘗試了網上的幾個網友提供的方法,始終不得其法,匯總后,終於嘗試成功!將一些需要注意的細節也記錄下來以后備用!
我們經常需要對我們的開發的軟件做各種測試, 軟件對系統資源的使用情況更是不可少, 目前有多個監控工具, 相比JProfiler對系統資源尤其是內存的消耗是非常龐大,JDK1.6開始自帶的VisualVM就是不錯的監控工具.
這個工具就在JAVA_HOME\bin\目錄下的jvisualvm.exe, 雙擊這個文件就能看到一個比較直觀的界面.
要進行遠程監控, 本機的VisualVM就必須和遠程的JVM要進行通信, Visualvm目前支持兩種remote connection方式.
分別是jstatd和JMX方式: 這里主要介紹的是通過JMX方式.
JMX方式:
首先講述需要賬號密碼的方式:
1.修改遠程需要被監控機子的jdk配置文件;
- 進入JAVA_HOME\jre\lib\management\
- 拷貝一份jmxremote.password.template並改名為jmxremote.password到當前目錄,並去掉# monitorRole QED 和 # controlRole R&D 這兩行 前面的注釋符號.
- 這里是設置 遠程登錄的賬號和密碼。比如默認的 賬號是 monitorRole 和controlRole,其對應的密碼分別是 QED和 R&D;可以自定義用戶名密碼,我自 定義了一個賬號密碼都為 root的賬號。如圖:
- 同時需要修改 當前目錄里的jmxremote.access 文件,該文件可以控制訪問權限;如圖:
2.修改遠程機器上需要被監控的程序的配置文件 (我這里是監控Tomcat容器內部署的應用).
修改TOMCAT_HOME/bin/catalian.sh文件;
在第一行加入如下語句:
export JAVA_OPTS="-Djava.rmi.server.hostname=192.168.2.120 -Dcom.sun.management.jmxremote.port=18999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"
ps: 我需要監控的tomcat機子ip為 192.168.2.120;監控端口設置為:18999;遠程認證設置(默認)為true;
當時就因為很多資料上沒有 將JAVA_OPTS變量 export,導致失敗了多次。
詳細的參數見下面:
參數 | 描述 |
---|---|
com.sun.management.jmxremote | true / false. Default is true |
com.sun.management.jmxremote.port | Port number. No default. |
com.sun.management.jmxremote.ssl | true / false. Default is true. |
com.sun.management.jmxremote.ssl.enabled.protocols | Default SSL/TLS protocol version. |
com.sun.management.jmxremote.ssl.enabled.cipher.suites | Default SSL/TLS cipher suites. |
com.sun.management.jmxremote.ssl.need.client.auth | true / false. Default is false |
com.sun.management.jmxremote.authenticate | true / false.Default is true |
com.sun.management.jmxremote.password.file | JRE_HOME/lib/management/jmxremote.password |
com.sun.management.jmxremote.access.file | JRE_HOME/lib/management/jmxremote.access |
com.sun.management.jmxremote.login.config | Default login configuration is a file-based password authentication |
3.重啟tomcat,讓配置生效。
ps: 可以用 netstat -anp| grep 18999 ,查看守護線程是否已經啟動!如圖:
4.VisualVM配置。
- 打開你本機命令框,輸入jvisualvm,點擊這個EXE文件;或者進入JAVA_HOME\bin\目錄下面點擊也可以!
- 右擊遠程,點擊添加遠程主機:
- 右擊 192.168.2.120(遠程主機),添加一個JMX鏈接,如圖:
- 登錄后狀態:
ps:
不需要賬號密碼登錄的,設置:-Dcom.sun.management.jmxremote.authenticate=false 即可。
export JAVA_OPTS="-Djava.rmi.server.hostname=192.168.2.120 -Dcom.sun.management.jmxremote.port=18999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" 如圖:
輸入端口,直接點擊確定,即可登錄!
ok!后面的可以參考 java自帶的監控工具VisualVM一,來監控學習了!
Jstatd方法:(略)還沒有試過!
參考文件:
https://segmentfault.com/a/1190000004313468
http://blog.csdn.net/lijiecong/article/details/6882267
http://blog.csdn.net/wzyzzu/article/details/50380511