在給客戶的應用程序維護的過程當中,我注意到在高負載下的一些性能問題。理論上,增長對應用程序的負載會使性能等比率的降低。然而,我認爲性能降低的比率遠遠高於負載的增長。我也發現,性能能夠經過改變應用程序的邏輯來提高,甚至達到極限。爲了更詳細的瞭解這一點,咱們須要作一些性能分析,天然也要用到一些分析工具。web
Java有許多的性能分析工具,能夠幫助咱們弄清楚這個問題,可是咱們應該使用哪一款工具呢?spring
爲了作出正確的選擇,我列出性能分析應知足一些最低要求:mongodb
1.必須包括對應用程序的類、方法及時間的監測tomcat
2.必須包括對內存的監測服務器
3.必須具備易用性ide
我配置了一個使用RESTful接口的Spring應用程序,使用MongoDB做爲數據存儲,還使用Solr搜索,並在Tomcat服務器上部署。工具
參考工具:性能
VisualVMui
VisualVM是一個資源分析工具,一直從JDK 6更新到7。它默認內存和CPU的監視。它能夠告訴你哪一個類和方法消耗資源,但它不會顯示代碼流程。idea
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插件。但願本文能幫助你作出正確的選擇。