1. 程式人生 > >JVM監測分析JConsole

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

這裡可以有一些額外的操作。

  MBean

7.外掛

Java程式碼

1.jconsole -pluginpath C:\Java\jdk1.6.0_22\demo\management\JTop\JTop.jar

一看便知,是個什麼東西。

  JTop

8.推薦使用升級版JConsole即jvisualvm。

關於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
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。