監控應用程序的性能是軟件開發中最困難的挑戰之一。事實上,任何編程語言和平臺都是如此。JAVA性能監控本身存在一些獨特的挑戰。
Java性能監控是一項持續的任務,因此擁有合適的工具非常重要。我們將討論九種Java性能監控工具。
1.Java分析工具
JVM概要文件通過跟蹤所有方法調用提供大量原始數據,允許你查找CPU和內存消耗熱點。
一個很好的擴展測試是設置一個ApacheJMeter作業,以在鏈接到探查器時命中你正在開發的數千次端點。這允許你指定生產所需的內存和CPU。
常用工具:VisualVM、JProfiler、YourKit和Java任務控制。
2.跟蹤Java Web請求和事務
標準的java評測工具專注于整個應用程序中所有方法的性能。這些工具專注于單個web請求或事務的性能。
Prefix
Prefix提供了應用程序的深層性能細節,包括ORM調用和生成的SQL、SOAP/RESTAPI調用,以及最常用的第三方庫和框架的跟蹤細節。
XRebel
XRebel是使用web應用程序容器上的Java代理設置的,它在應用程序上提供了一個覆蓋層,提供了當前請求的詳細信息。
3..APM的Java性能監控
應用程序性能管理(APM)工具負責跟蹤生產系統上的所有請求。這些分析器的訣竅是以智能的方式提供正確的信息,以免影響生產性能。
這是通過聚合定時統計信息和采樣軌跡來實現的。這為你提供了在生產環境中運行的代碼的方法級可見性。
4.具有真實用戶監控(RUM)的Java性能監控
web應用程序客戶端負擔過重的情況并不少見。因此,提供交互式體驗可能需要大量依賴性,例如JavaScript/css框架、web字體和圖像。
RUM通過提供資產下載和頁面呈現時間的可見性,深入了解應用程序的依賴關系。一些APM產品將此作為附加功能。也有獨立的產品,如google PageSpeed。
5.JVM性能指標
JVM提供了大量有價值的信息,比如垃圾收集、內存使用和線程計數。這一數據通過JMX提供。
6.Web服務器(Apache/Nginx)訪問日志
如果有Apache或Nginx代理請求到Java應用程序服務器,則可以監視訪問日志。這是一種快速查看請求需要多長時間的方法。你可以聚合訪問日志以查看最流行/最快/最慢的端點是什么。不過,通過命令行執行此操作可能會很耗時。
對于小型數據集,可以使用Apache Viewer等桌面工具,但對于登臺和生產環境,托管日志記錄解決方案是理想的。跟蹤失敗的請求也非常有用,可以通過聚合HTTP響應代碼來完成。
7.跟蹤所有Java異常
性能問題的最大原因之一可能是應用程序異常。當拋出異常時,它會導致線程在收集堆棧跟蹤時暫停。即使是看似無害的已處理異常,在服務器負載過重的情況下也會導致巨大的性能瓶頸。
8.監視Java異常
當試圖提高應用程序的性能時,通常不需要模擬用戶的請求,而是監視其實際操作。通過監控生產和QA環境中的JavaEE服務器,你能夠在問題變得過于嚴重之前根據趨勢做出決策。你還可以找出響應時間的原因,根據這些時間實現優化。
9.記憶分析
崩潰后的應用程序內存分析有助于確定內存泄漏的原因。通過向JVM添加以下參數,可以指示JVM在OutOfMemoryError異常時轉儲堆:
-XX:+HeapDumpOnOutOfMemoryError
堆轉儲文件可以加載到分析器:Eclipse MAT中。你可以深入查看Overview或Leaks Suspects報告,以幫助確定內存異常的原因。
提高應用程序的性能
最大的收獲是,使用所有這些工具,Java性能監控比以往任何時候都容易。不要被你應該做的所有事情淹沒。首先從低風險開始,比如異常跟蹤。至少知道你有哪些選擇是很好的,希望你覺得這個列表很有用。想學習java編程的同學,不妨報個java培訓班,有經驗豐富的專業講師線下面授指導教學,及時解決學習上的問題,讓你獲得快速提升。