5款Java效能分析工具的對比

發表於2012-03-30

英文原文:orange11.nl,翻譯:oschina

在給客戶的應用程式維護的過程中,我注意到在高負載下的一些效能問題。理論上,增加對應用程式的負載會使效能等比率的下降。然而,我認為效能下降的比率遠遠高於負載的增加。我也發現,效能可以通過改變應用程式的邏輯來提升,甚至達到極限。為了更詳細的瞭解這一點,我們需要做一些效能分析,自然也要用到一些分析工具。

Java 有許多的效能分析工具,可以幫助我們弄清楚這個問題,但是我們應該使用哪一款工具呢?

為了做出正確的選擇,我列出效能分析應滿足一些最低要求:

● 必須包括對應用程式的類、方法及時間的監測

● 必須包括對記憶體的監測

● 必須具有易用性

我配置了一個使用 RESTful 介面的 Spring 應用程式,使用 MongoDB 作為資料儲存,還使用 Solr 搜尋,並在 Tomcat 伺服器上部署。

參考工具:

VisualVM

VisualVM 是一個資源分析工具,一直從 JDK 6 更新到7。它預設記憶體和 CPU 的監視。它可以告訴你哪個類和方法消耗資源,但它不會顯示程式碼流程。

JProfiler

JProfiler 很容易安裝,並且通過嚮導,你可以選擇應用伺服器用來執行應用程式。我不得不選擇使用 JPofiler 應用伺服器的主目錄,以及嚮導生成的一個單獨的啟動指令碼。然後執行伺服器。在監聽會話的過程中,它會提供了幾個選項。它可以記錄記憶體的使用和 CPU 的使用率。在檢視 CPU 的使用率同時,可以看到執行路徑。這讓我看到應用程式大部分時間都花在請求上。我們可以將 IntelliJ 外掛安裝到 IDE 上,那麼執行 JProfiler 會更加便利。比如,可以直接幫我啟動 Tomcat。

YourKit

YourKit 是我在另一個專案中偶然發現的一款效能分析工具。它的安裝很簡單。安裝時有一個選項,可以安裝一個外掛到我的 IDE。安裝後,執行應用程式,使用該外掛,它會自動連線到 YourKit。它有一個漂亮的使用者介面可以檢視到記憶體和 CPU 的監測,同時也可以看到請求的執行路徑。

JProbe

我剛開始建立 JProbe 時遇到點困難。安裝並不是直接完成,我需要對它進行配置。它採用了類似 JProfiler 一樣的設定。它會在你的 Tomcat 目錄中生成啟動指令碼。可以通過指令碼啟動伺服器並監聽會話。它的介面包含有按鈕和表格,其中可以看到記憶體的使用,但無法在程式中找到執行路徑。

Spring Insight

聽到 TC Server 有 Spring Insight 監控介面,於是我興奮地嘗試了一下。安裝完成後,並設定成 TC Server 的開發者版,然後部署應用程式在 TC Server 上。我檢視 Insight 介面,它可以很好的監視類和方法,並能看到完成這個方法用了多少時間。我還能看到輸入引數值,以及返回值。由於我的應用程式是基於 Spring 的,Spring Insight 能夠提供非常有用的資料。TC Server 外掛在 IDE 上的配置與 Tomcat 的配置類似。SpringSource 工具套件就自帶 Spring Insight。

結論

看到這五款效能分析工具,我可以肯定地說,它們都非常不錯。如果你有基於 Spring 的應用程式,那麼選擇 Spring Insight 顯然是最佳的。它一直是免費的,但你需要部署你的應用在 TC Server 上。

如果你想監聽本地和遠端的程式,我會選擇 JProfiler 或 YourKit。這兩個也可以幫助 Spring Insight 來監測、找到效能瓶頸。

JProfiler 和 YourKit 已經能滿足我的上述要求。JProfiler、YourKit 和 Spring Insight 都可以跟蹤應用程式的類和方法的流向。JProfiler 和 YourKit 可以顯示記憶體使用情況。雖然 Spring Insight 不可以顯示記憶體使用情況,但它可以很好的顯示吞吐量的趨勢。這三款效能分析工具功能很清楚,不混亂,而且容易使用。最後,他們都有自己的 IDE 外掛。希望本文能幫助你做出正確的選擇。

 

 

相關文章