2011-04-13 134 views
3

我們正在研究一個初步使用Struts2 + Spring 3.x + Hibernate 3.x的Web應用程序。我們正在考慮使用良好的剖析工具來避免任何潛在問題。基於Java的Web應用程序的剖析工具

我是新來的這方面如此,在做一些研究,想出了這兩個候選

  • 的JProfiler
  • VisualVM的

請提供有關這兩個您的意見或是否有任何其他好的候選人請建議。 我也有幾個關於這方面的疑問。

  1. 由於項目仍處於中間位置,因此使用Profiler有多相關。
  2. 因爲我們將使用這個最初在 開發系統,所以我不 認爲這是生產 的副本,可能會有很多問題,其中 只是超出範圍的生產。
  3. 多少操作系統可以使分析結果,因爲大部分 開發機將基於而分期和 產量將基於Linux的窗口 差異 。

請提供寶貴意見。

回答

3

去JProfiler。我已經使用了3年,特別是對於CPU性能分析,它確實非常棒。 VisualVM不提供JProfile所做的那種深入研究。它可以識別J2EE組件,並且可以爲流提供準確的SQL。根據我的經驗,這非常重要,95%的性能問題來自於不負責任和不必要的DB命中。

因爲您正在使用Hibernate,因此分析將幫助您確定何時啓用延遲加載以及何時啓用對象,查詢和關聯緩存。

爲了回答您的其他問題,

  1. 不要緊,在什麼階段你的項目,如果你覺得這是不是表現良好,分析是與您有關。不要推遲它,因爲如果問題出現在覈心組件的設計中,它有可能在整個應用程序中傳播,並且很難在後續階段修復它。

  2. duffymo的回答。

  3. 很多區別。我們的Linux機器具有相同的配置,通常比Windows機器更快且響應速度更快。但是,正如duffymo所回答的那樣,剖析能夠爲您提供熱點和每個組件和方法所花費的時間百分比。用於分析的應用程序類比正常情況慢了至少50%(我使用JProfiler的經驗)。

+0

+1 Adi的寶貴意見 – 2011-04-14 04:22:15

0

VisualVM是一個了不起的工具。很難相信這麼好的東西與Sun/Oracle的JDK下載捆綁在一起。我建議使用JDK 6和更高版本。您只需獲取應用程序的PID並將其提供給VisualVM;它會完成剩下的工作。

以下是答覆你的問題:

有關如何使用分析器作爲該項目仍處於中間位置。

我不確定你在這裏是什麼意思。我會假設你在質問探測器對性能的負面影響。您正在檢查相對效果,而不是絕對數字。您的基準績效,進行更改並重新衡量。 Profiler對於兩者都是相同的。

因爲我們將使用這個最初在 開發系統,所以我不 認爲這是生產 的副本,可能會有很多問題,這些問題 剛剛走出的範圍以生產。

您只會瞭解您測量的系統。如果開發與生產不同,你能做的最好的是變化的相對效應,而不是絕對值。

多少操作系統可以使 分析結果,因爲大多數 開發機的差別將同時登臺和生產 將基於Linux窗口 。

如果您擔心,我會在Windows和Linux上進行基準測試。我的猜測是它可以忽略不計,但一次性測量將證實或否認這一點。

0

如果您使用Eclipse,並從Eclipse啓動您的開發服務器,則需要鎖定在Eclipse TPTP

+0

@TPTP可能是一個不錯的選擇,但它有一個複雜的設置循環,因爲我在大多數論壇和articles..i的閱讀一定會喜歡花更多的時間在分析比設置系統 – 2011-04-13 15:25:50

+0

@umesh awasthi :我無法將它與其他工具進行比較,當我記得對的時候,這不是一個問題。 (1年前) – Ralph 2011-04-13 15:36:04

+0

我說的只是我真誠地讀了我沒有使用它我自己。將盡我所能 – 2011-04-13 15:47:38

0

我對這兩者沒有任何經驗,但我們運行了很多Java Web應用程序(包括servlet容器和遊戲服務器平臺)。我們的開發和生產服務器是Linux和BSD的混合體,而我們的開發人員幾乎涵蓋了一切:Linux,MacOS,Windows。

對於我們所有的分析需求,我們使用Yourkit(http://www.yourkit.com/)。我們通常不會做很多分析工作來識別瓶頸等等(儘管我們已經做了一些),但是它被證明是一個用於發現死鎖,內存泄漏,性能問題等的好工具。

我們有它在全天候的生產服務器上以低影響的模式運行,因此我們可以在必要時獲得快照,並且已經在所有開發階段使用它。

0

我對內置於NetBeans中的剖析器有非常好的經驗。

VisualVM中的分析器是NetBeans分析器的精簡版。