1. 程式人生 > >JProfiler一個專業的Java效能監控工具

JProfiler一個專業的Java效能監控工具

JProfiler是一個全功能的Java剖析工具(profiler),專用於分析J2SE和J2EE應用程式。它把CPU、執行緒和記憶體的剖析組合在一個強大的應用中。JProfiler可提供許多IDE整合和應用伺服器整合功能。JProfiler直覺式的GUI讓你可以找到效能瓶頸、抓住記憶體洩漏(memory leaks)、並解決多執行緒的問題。它讓你得以對heap walker作資源回收器的root analysis,可以輕易找出記憶體洩漏;heap快照(snapshot)模式讓未被引用(reference)的物件, 稍微被引用的物件、或在終結(finalization)序列的物件都會被移除;整合精靈以便剖析瀏覽器的Java外掛功能。

JProfiler能幫助你快速建立不同內容的監控:

注:下述內容來自網際網路部落格,正確與否未做甄別,閱讀慎之。

下載地址:
http://download.ej-technologies.com/jprofiler/jprofiler_windows_4_2_2.exe
解密過程:
將EJ[1].Technologies.JProfiler.v4.2.2.Incl.Keymaker-AGAiN壓縮包中的jkgone.jar解壓到
根目錄或其它目錄下執行如下命令.
java -jar jkgone.jar

JProfiler 3.3.1
s/n: A-XiV7#20128F-1nf9r2z1qepp2e#7120

EJ Technologies JProfiler 2.2.1 
S/N: A-DWP#OWNZ#YOU-212hyr 

JProfiler 3.3
S/N: A-XiV6#62267F-1tfbcghardqqd#16312<br>

JProfiler 3.2.0
S/N: A-GAiN#91584F-vd0mmz13mkf00#181013<br>or<br>A-GAiN#22031F-1giul8u16x7p65#121218<br>or<br>A-GAiN#98900F-1j62dw18rpusn#111117<br>

JProfiler 3.2
S/N: A-GAiN#70503F-l7qte9gtq77c#81111<br>or<br>A-GAiN#19132F-y2fnayai9yu8#141420<br>


目前最新版為4.3,大家可以申請試用10天,如果大家還需要其它版本的註冊碼回覆

註冊檔案下載地址:

由於G寶盤只能傳小於10MB檔案,所以到主頁公佈的郵箱進行全部下載.


 

來自:http://www.anymobile.org
 

1、摘要..........................................................................1
2、改善伺服器的效能...........................................................1
3、分析器原理...................................................................2
4、JProfiler 簡介...............................................................2
5、JProfiler 特徵...............................................................3
6、本地監控.....................................................................4
7、遠端監控.....................................................................7
8、參考..........................................................................9

、 摘要

       改善 Java 伺服器的效能需要模擬負載下的伺服器。建立一個模擬環境、蒐集資料並且分析結果可能是對許多開發人員的挑戰。這篇文章介紹了使用 JProfiler 跟蹤分析 Java 伺服器的效能。

簡單的效能問題很容易分離並解決,然而,大的效能問題,如記憶體溢位或者系統的罷工,通常在系統處於高負載情況下發生,就不能這麼簡單的處理了。這些問題需要一個獨立的測試環境、一個模擬的負載,並且需要仔細地分析和跟蹤。

在這篇文章中,我使用比較通用的工具( JProfiler 和 JBuilder )和裝置建立了一個性能監控分析環境,跟蹤本地和遠端的伺服器程式,專注於三個性能問題:記憶體、垃圾回收和多執行緒執行狀況,從而很好的監視 JVM 執行情況及其效能。

2 、改善伺服器的效能

伺服器的效能改善是依賴於資料的。沒有可靠的資料基礎而更改應用或環境會導致更差的結果。分析器提供有用的 Java 伺服器應用資訊,但由於從單使用者負載下的資料與多使用者負載下得到的資料是完全不同的,這導致分析器的資料並不精確。在開發階段使用分析器來優化應用的效能是一個好的方式,但在高負載下的應用分析可以取到更好的效果。

在負載下分析伺服器應用的效能需要一些基本的元素:

1、  可控的進行應用負載測試的環境。

2、  可控的人造負載使得應用滿負荷執行。

3、  來自監視器、應用和負載測試工具自身的資料蒐集。

4、  效能改變的跟蹤。

不要低估最後一個需求(效能跟蹤)的重要性因為如果不能跟蹤效能你就不能實際的管理專案。效能上 10-20% 的改善對單使用者環境來說並沒有什麼不同,但對支援人員來說就不一樣了。20% 的改善是非常大的,而且通過跟蹤效能的改善,你可以提供重要的反饋和持續跟蹤。

雖然效能跟蹤很重要,但有時為了使後續的測試更加精確而不得不拋棄先前的測試結果。在效能測試中,改善負載測試的精確性可能需要修改模擬環境,而這些變化是必須的,通過變化前後的負載測試你可以觀察到其中的轉變。

3 、 分析器原理

現在幾乎所有的分析器都是從同一個起點和約束開始的: Java 虛擬機器分析器介面 (JVMPI) ( 參考 "The Java Virtual Machine Profiler Interface") 。 Sun 微系統的 API 允許工具開發商介面或者連線到遵循 JVMPI 的 JVM 上,並且監控運作的方式以及 JVM 執行任何 Java 程式時的關鍵事件 -- 從單獨的應用程式到 Applet 、 Servlet 和企業 JavaBeans (EJB) 元件。 

在分析器內啟動一個程式意味著生成、捕捉、和觀察大量資料,所以所有的分析器都包含著不同的方法來控制資料的流動,在不同的標準以及每一封裝包的基礎上進行過濾。同樣 也可以使用靈活的正規表示式型別模式來完成。

 是一個全功能的 Java 剖析工具( profiler ),專用於分析 J2SE 和 J2EE 應用程式。它把 CPU 、執行緒和記憶體的剖析組合在一個強大的 應用中。 JProfiler可提供許多 IDE 整合和應用伺服器整合用途。 JProfiler 直覺式的 GUI 讓你可以找到效能瓶頸、抓出記憶體漏失 (memory leaks) 、並解決執行緒的問題。它讓你得以對 heap walker 作資源回收器的root analysis ,可以輕易找出記憶體溢位; heap 快照( snapshot )模式讓未被參照( reference )的物件、稍微被參照的物件、或在終結( finalization )佇列的物件 都會被移除;整合精靈以便剖析瀏覽器的 Java 外掛功能。

目前最新的版本是 4.1.2 ,幾乎支援所有常用的 IDE 和 Application Server ,可以到其 EJ 官方網站 http://www.ej-technologies.com/ 下載,申請一個十天的試用註冊碼。

5 、 JProfiler 特徵

5.1 記憶體剖析 Memory profiler

JProfiler 的記憶體檢視部分可以提供動態的記憶體使用狀況更新檢視和顯示關於記憶體分配狀況資訊的檢視。所有的檢視都有幾個聚集層並且能夠顯示現有存在的物件和作為垃圾回收的物件。

  • 所有物件 
    顯示類或在狀況統計和尺碼資訊堆上所有物件的包。你可以標記當前值並顯示差異值。
  • 記錄物件 Record objects 
    顯示類或所有已記錄物件的包。你可以標記出當前值並且顯示差異值。
  • 分配訪問樹 Allocation call tree 
    顯示一棵請求樹或者方法、類、包或對已選擇類有帶註釋的分配資訊的J2EE元件。
  • 分配熱點 Allocation hot spots 
    顯示一個列表,包括方法、類、包或分配已選類的J2EE元件。你可以標註當前值並且顯示差異值。對於每個熱點都可以顯示它的跟蹤記錄樹。

5.2 堆遍歷 Heap walker

在JProfiler的堆遍歷器(Heap walker)中,你可以對堆的狀況進行快照並且可以通過選擇步驟下尋找感興趣的物件。堆遍歷器有五個檢視:

  • 類 Classes 
    顯示所有類和它們的例項。
  • 分配 Allocations 
    為所有記錄物件顯示分配樹和分配熱點。
  • 索引 References 
    為單個物件和“顯示到垃圾回收根目錄的路徑”提供索引圖的顯示功能。還能提供合併輸入檢視和輸出檢視的功能。
  • 資料 Data 
    為單個物件顯示例項和類資料。
  • 時間 Time 
    顯示一個對已記錄物件的解決時間的柱狀圖。

5.3 CPU 剖析 CPU profiler

JProfiler 提供不同的方法來記錄訪問樹以優化效能和細節。執行緒或者執行緒組以及執行緒狀況可以被所有的檢視選擇。所有的檢視都可以聚集到方法、類、包或J2EE元件等不同層上。CPU檢視部分包括:

  • 訪問樹 Call tree 
    顯示一個積累的自頂向下的樹,樹中包含所有在JVM中已記錄的訪問佇列。JDBC,JMS和JNDI服務請求都被註釋在請求樹中。請求樹可以根據Servlet和JSP對URL的不同需要進行拆分。
  • 熱點 Hot spots 
    顯示消耗時間最多的方法的列表。對每個熱點都能夠顯示回溯樹。該熱點可以按照方法請求,JDBC,JMS和JNDI服務請求以及按照URL請求來進行計算。
  • 訪問圖 Call graph 
    顯示一個從已選方法、類、包或J2EE元件開始的訪問佇列的圖。

5.4 執行緒剖析 Thread profiler

對執行緒剖析,JProfiler提供以下檢視:

  • 執行緒歷史 Thread history 
    顯示一個與執行緒活動和執行緒狀態在一起的活動時間表。
  • 執行緒監控 Thread monitor 
    顯示一個列表,包括所有的活動執行緒以及它們目前的活動狀況。
  • 死鎖探測圖表 Deadlock Detection 
    顯示一個包含了所有在JVM裡的死鎖圖表。
  • 目前使用的監測器 Current monitor useage 
    顯示目前使用的監測器並且包括它們的關聯執行緒。
  • 歷史檢測記錄 History usage history 
    顯示重大的等待事件和阻塞事件的歷史記錄。
  • 監測使用狀態 Monitor usage statistics 
    顯示分組監測,執行緒和監測類的統計監測資料。

5.5 VM 遙感勘測技術 VM telemetry

觀察JVM的內部狀態,JProfiler提供了不同的遙感勘測檢視,如下所示:

  • 堆 Heap 
    顯示一個堆的使用狀況和堆尺寸大小活動時間表。
  • 記錄的物件 Recorded objects 
    顯示一張關於活動物件與陣列的圖表的活動時間表。
  • 垃圾回收 Garbage collector 
    顯示一張關於垃圾回收活動的活動時間表。
  • 類 Classes 
    顯示一個與已裝載類的圖表的活動時間表。
  • 執行緒 Threads 
    顯示一個與動態執行緒圖表的活動時間表。

6 、 本地監控

系統環境 Windows OS ;軟體 JBuilderX/2005 和 JProfiler 4.1.2

1 、安裝 JBuilderX 和 JProfiler 4.1.2

2 、執行 JProfiler , Session-> IDE integration tab, IDE 選擇Borland JBuilder7 to 2005,點選Integrate按鈕,選擇JBuilder的安裝目錄,確認,會看到已經將JProfiler以OpenTool的形式,成功整合到JBuilder中,見下圖。

 


3
 、執行 JBuilder ,開啟 Run->Configurations ,選擇或新建一個 Runtime ,在 Optimize 選項中就可以看到 JProfiler ,可以選擇每次執行程式新建一個 JProfiler 視窗的提示設定。

4 、點選 Optimize Project 按鈕,執行程式。


 

5
 、彈出如下的 JProfiler 視窗,確認相關的資訊即可。


 

6
 、至此,就可以監控本地伺服器的各個方面的效能了。







7 、 遠端監控

伺服器程式一般執行在遠端的伺服器裝置上,有時候我們還需要遠端監控商用的伺服器資源。

伺服器作業系統 Linux OS ,安裝步驟如下:
1、./jprofiler_linux_4_1_2.sh,出現如下提示:
testing JVM in /usr/jdk1.4 ...
Starting Installer ...
注:對於沒有安裝X Server的機器,需要執行./jprofiler_linux_4_1_2.sh -q,否則會提示,
testing JVM in /usr/jdk1.4 ...
Starting Installer ...
This installer needs access to an X Server.
If this is not possible, you can run the installer in unattended mode
by passing the argument -q to the installer.
2、安裝完畢後,會在/opt目錄下,找到jprofiler的安裝目錄,/opt/jprofiler4。

本地作業系統 WindowXP ,相關的配置如下:

1 、本地安裝 JProfiler , Linux 伺服器上也安裝 JProfiler (只有本地 / 監控者的需要輸入序列號)。

2 、開啟本地的 JProfiler , session->Integration wizards-> New Remote integration

3 、選擇 on a remote computer , platform 選擇 linux x86/AMD64 ,點選 next

4 、輸入遠端 ip 地址,點選 next

5 、輸入遠端 JProfiler 的安裝目錄,預設都安裝在 /opt/jprofiler4 下,一路NEXT

6 、出現下面提示框,按照要求配置下伺服器的設定,介面如下:

 
Java
 執行語句中加入下列執行引數

 -Xint -Xrunjprofiler:port=8849 -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar ;

/etc/profile 中加入 export LD_LIBRARY_PATH=/opt/jprofiler4/bin/linux-x86 ,退出、重新登陸。

7 、好了,全部配置完畢,先執行遠端伺服器程式,再開啟本地的 JProfiler 程式,握手成功後,遠端程式正常運行了。

伺服器資訊如下:

[[email protected] 55556]# tail -f nohup.out

JProfiler> Protocol version 21

JProfiler> Using JVMPI

JProfiler> 32-bit library

JProfiler> Listening on port: 8849.

JProfiler> Native library initialized

JProfiler> Waiting for a connection from the JProfiler GUI ...

// 以上為本地 JProfiler 連上前的系統提示

JProfiler> Using dynamic instrumentation

JProfiler> Time measurement: elapsed time

JProfiler> CPU profiling enabled

JProfiler> Starting org/anymobile/server/cmwap/CmwapServer ...

2005/12/15 17:05:46 [ INFO] - Starting Cmwap Stand Server ...
2005/12/15 17:05:47 [ INFO] - HandleThread runing ......

8 、補充說明及參考

8.1 補充說明

如果你希望動態儲存當前 Session 的執行資料的快照,點選 JProfiler 的儲存按鈕即可;

可以通過 JProfiler Start Center 的 Open snapshot tab 開啟儲存的 Session ;

你也可以右鍵點選某個檢視,靜態儲存到 HTML 檔案,文字描述加檢視圖片;

有一些檢視的資料只會執行一次,不會動態的重新整理,如記憶體檢視中的分配訪問樹等檢視;

WinXP 下 JProfiler 似乎不支援中文, 2K 下支援的,上面有一些圖片是在 2K 系統上擷取的;

另外, JProfiler 還可以監控某個 Application Server 、 Applet ,功能非常強大,可以參考軟體自帶的 Help 。

8.2 參考