一、基本操作
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、無需認證就可以被連接)
-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)
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、另外一臺機器進行連接
可以直接使用命令:
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
這里可以有一些額外的操作。
7.插件
1.jconsole -pluginpath C:\Java\jdk1.6.0_22\demo\management\JTop\JTop.jar
一看便知,是個什么東西。
關于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.給我很大的啟發,解決用戶名和密碼登錄問題