JVM監測分析JConsole
一、基本操作
啟動介面1.JConsole是什麼
從Java 5開始引入了JConsole。JConsole是一個內建Java效能分析器,可以從命令列或在GUI shell中執行。您可以輕鬆地使用JConsole(或者,它更高階的“近親” VisualVM)來監控Java應用程式效能和跟蹤Java中的程式碼。
2.如何啟動JConsole
1)如果是從命令列啟動,使JDK在PATH上,執行jconsole即可。
2)如果從GUI shell啟動,找到JDK安裝路徑,開啟bin資料夾,雙擊jconsole。
當分析工具彈出時(取決於正在執行的Java版本以及正在執行的Java程式數量),可能會出現一個對話方塊,要求輸入一個程序的URL來連線,也可能列出許多不同的本地Java程序(有時包含JConsole程序本身)來連線。如圖所示:
連結介面想分析那個程式就雙擊那個程序。
3.如何設定JAVA程式執行時可以被JConsolse連線分析
本地程式(相對於開啟JConsole的計算機),無需設定任何引數就可以被本地開啟的JConsole連線(Java SE 6開始無需設定,之前還是需要設定執行時引數-Dcom.sun.management.jmxremote)
無認證連線(下面的設定表示:連線的埠為8999、無需認證就可以被連線)
Java程式碼
-Djava.rmi.server.hostname=10.0.0.110(伺服器IP)
-Dcom.sun.management.jmxremote.port=8999\
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=8999\
-Dcom.sun.management.jmxremote.authenticate=false\
-Dcom.sun.management.jmxremote.ssl=false
4.JConsole如何連線遠端機器的JAVA程式(舉例說明)
1、寫一個簡單的一直執行的JAVA程式,執行在某臺機器上如(192.168.0.181)
Java程式碼
1.java -cp .
2.-Djava.rmi.server.hostname=10.0.0.110(伺服器IP)
3.-Dcom.sun.management.jmxremote.port=8999
4.-Dcom.sun.management.jmxremote.authenticate=false
5.-Dcom.sun.management.jmxremote.ssl=false
6.JConsoleTest
java -cp .-Dcom.sun.management.jmxremote.port=8999-Dcom.sun.managent.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false JConsoleTest
2、另外一臺機器進行連線
可以直接使用命令:
Java程式碼
1.jconsole.exe192.168.0.181:8999
jconsole.exe192.168.0.181:8999
也可以在已經開啟的JConsole介面操作 連線->新建連線->選擇遠端程序->輸入遠端主機IP和埠號->點選“連線”,如圖:
遠端連線然後就會進入分析介面:
5.通過認證登入進行遠端連線
如果考慮到安全因素,需要認證,需要安全連線,也是可以搞定的。參考:http://download.oracle.com/javase/6/docs/technotes/guides/management/agent.html#gdenv
注意問題
1.-Dcom.sun.management.jmxremote.authenticate=true
2.-Dcom.sun.management.jmxremote.pwd.file指定正確的密碼檔案
3.使用者名稱及密碼(參考jmxremote.password檔案) monitorRole只能讀,controlRole能讀寫
配置中的安全原因出錯,由於密碼是以明文的方式儲存在:jmxremote.password中,所以對此檔案只能有所有者都讀取,其他人都不能讀取。
許可權需要注意,600,所有者有rw許可權。
4.使用者和許可權其實是存在jmxremote.access中。
千萬要注意啊,網上的絕大部分資料,都沒有提到這個檔案的真正作用。
我是在嘗試了若干小時之後,才發現這個檔案的作用,竟然是如此的大。
有點類似於SVN配置,使用者名稱-許可權,使用者名稱-密碼,2個配置檔案。
fansunion readonly
admin readwrite \
createjavax.management.monitor.*,javax.management.timer.* \
unregister
jmxremote.password內容
fansunion 12345
admin 12345
“http://www.linuxidc.com/Linux/2015-02/113415.htm”這篇文章的最後,
"使用者名稱及密碼(參考jmxremote.password檔案) monitorRole只能讀,controlRole能讀寫",給我很大的啟發。
為什麼monitorRole和controlRole,這2個角色的許可權還不一樣呢,預設註釋的password檔案中,沒有看出有啥區別呀。
於是,我才去jmxremote.access檔案看了看,最終找到了問題的癥結。
至此,不使用密碼和使用使用者名稱及密碼,“admin”-“12345”成功登入42.96.84.84上的Tomcat使用的JVM。
注意:本文中的ip、使用者名稱、密碼,僅供參考,你懂的。
二、效能分析
下面說說如何分析,如何使用這六個標籤
概述:Displays overview information about the Java VM and monitored values.
記憶體:顯示記憶體使用資訊
執行緒:顯示執行緒使用資訊
類:顯示類裝載資訊
*VM摘要:*顯示java VM資訊
MBeans:顯示MBeans.
1.概述
概述很簡單沒啥說的,自己看看吧,不過值得一提的是對著圖點選右鍵可以儲存資料到CSV檔案,以後可以使用其他工具來分析這些資料。
概述2.記憶體
這個比較有價值,參看堆記憶體,非堆記憶體,記憶體池的狀況總體記憶體的分配和使用情況以及不同的GC進行垃圾回收的次數和時間。可以手動進行GC檢視記憶體變化。
記憶體在分析JAVA記憶體問題進行調優時候非常有用,你要學習JVM記憶體模型,之後會發現這裡的每個值都具有意義。
GC的演算法和引數對效能有顯著的影響,注意垃圾回收次數、時間、以及partial GC和full GC,調整你所使用的不同GC和以及各個GC下的引數,然後在這個檢視下觀察,以得到好的效能。
這裡貼一下Java HotSpot VM garbage collector下generational GC的各代的劃分圖:
記憶體模型關於GC,可以參考:http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html
3.執行緒
左下角顯示所有的活動執行緒(如果執行緒過多,可以在下面的過濾欄中輸入字串過濾出你想要觀察的執行緒)。點選某個顯示會顯示這個執行緒的名稱、狀態、阻塞和等待的次數、堆疊的資訊。
執行緒統計圖顯示的是執行緒數目的峰值(紅色)和當前活動的執行緒(藍色)。另外下面有個按鈕“檢測到死鎖”,有時候會有用處。
4.類
沒啥要說的。
類5.VM摘要
也沒啥要說的,看看吧,記憶體狀況,作業系統...
摘要6.MBean
這裡可以有一些額外的操作。
MBean7.外掛
Java程式碼
1.jconsole -pluginpath C:\Java\jdk1.6.0_22\demo\management\JTop\JTop.jar
一看便知,是個什麼東西。
JTop關於jvisualvm的使用,->http://jiajun.iteye.com/blog/1180230
-----------------------------------------------------------------------------------------------------------------------
三、參考資料
Monitoring and Management Using JConsole:http://download.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html
http://download.oracle.com/javase/6/docs/technotes/guides/management/agent.htmlMonitoring and Management Using JMX Technology:http://download.oracle.com/javase/6/docs/technotes/guides/management/agent.html
Eclipse launcher for VisualVM:http://visualvm.dev.java.net/eclipse-launcher.html
Tuning Garbage Collection with the 5.0 Java[tm]
Virtual Machine:http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html
1.入門參考
http://www.linuxidc.com/Linux/2015-02/113413.htm
http://www.linuxidc.com/Linux/2015-02/113418.htm
2.最權威的
http://www.linuxidc.com/Linux/2015-02/113419.htm
3.給我很大的啟發,解決使用者名稱和密碼登入問題
http://www.linuxidc.com/Linux/2015-02/113415.htm
http://www.linuxidc.com/Linux/2015-02/113420.htm
作者:藍慧雲天
連結:https://www.jianshu.com/p/290489f0a495
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。