管理應(yīng)用程序的性能,特別是保持它處于良好狀態(tài),是軟件開發(fā)中最困難的挑戰(zhàn)之一。幾乎對任何編程語言和平臺都是如此,Java也不例外,除此之外,Java也提出了一些獨特的挑戰(zhàn)。例如,其中一個挑戰(zhàn)與垃圾收集有關(guān)。想要學(xué)習(xí)Java網(wǎng)絡(luò)的同學(xué)可以報名參加java培訓(xùn),可以獲得快速有效的學(xué)習(xí),全面掌握這些方法的使用。
垃圾收集是有代價的:太多的收集會降低性能。跟蹤Java應(yīng)用程序的性能是一項持續(xù)的任務(wù),因此擁有合適的工具非常重要。我們將討論九種Java性能工具。
1.Java分析器
JVM概要文件通過跟蹤所有方法調(diào)用提供了大量的原始數(shù)據(jù),允許你查找CPU和內(nèi)存消耗熱點。
一個好的擴展測試是設(shè)置一個ApacheJMeter作業(yè),以便在鏈接到探查器時訪問正在開發(fā)幾千次的端點。這允許你為生產(chǎn)指定內(nèi)存和CPU需求。
流行工具:VisualVM、JProfiler、YourKit和Java任務(wù)控制。
2.跟蹤JavaWeb請求和事務(wù)
標(biāo)準(zhǔn)分析器專注于整個應(yīng)用程序中所有方法的性能。這些工具專注于單個web請求或事務(wù)的性能。
Prefix提供有關(guān)應(yīng)用程序的深層性能詳細信息,包括使用生成的SQL的ORM調(diào)用、SOAP/RESTnenenebaAPI調(diào)用,以及來自最常用的第三方庫和框架的跟蹤詳細信息。在Java培訓(xùn)學(xué)習(xí)中,會有實操項目的訓(xùn)練,讓你學(xué)會在項目使用這些開發(fā)工具,大大提高你的開發(fā)技能。
XRebel是使用web應(yīng)用程序容器上的JavaAgent設(shè)置的,它在應(yīng)用程序上提供了一個覆蓋層,提供了有關(guān)當(dāng)前請求的詳細信息。
3.Java應(yīng)用性能管理(APM)
應(yīng)用程序性能管理(APM)工具負責(zé)跟蹤生產(chǎn)系統(tǒng)上的所有請求。這些分析器的訣竅是以一種巧妙的方式提供正確的信息,以便不影響生產(chǎn)性能。這是通過匯總計時統(tǒng)計數(shù)據(jù)和采樣跟蹤來實現(xiàn)的。這為你提供了在生產(chǎn)中運行的代碼的方法級可見性。
流行工具:NewRelic、Microsoft、Stactify、AppDynamics、Dynatrace等
4.真實用戶監(jiān)控(RUM)
web應(yīng)用程序客戶端繁重的情況并不少見。因此,提供交互式體驗可能需要大量的依賴性,例如Javascript/CSS框架、web字體和圖像。RUM通過提供資產(chǎn)下載和頁面呈現(xiàn)時間的可見性來深入了解應(yīng)用程序的依賴關(guān)系。
一些APM產(chǎn)品將此功能作為附加功能。還有一些獨立的產(chǎn)品,例如GooglePageSpeed。通過java培訓(xùn)的學(xué)習(xí),你可以學(xué)到很多企業(yè)級項目經(jīng)驗和技能,找到工作后,可以立馬上崗實操,大大提高開發(fā)效率。
5.JVM性能指標(biāo)
JVM提供了大量有價值的信息,比如垃圾收集、內(nèi)存使用和線程計數(shù)。這一數(shù)據(jù)通過JMX提供。
6.Web服務(wù)器(Apache/Nginx)訪問日志
如果你有Apache或Nginx代理Java應(yīng)用程序服務(wù)器的請求,則可以監(jiān)視訪問日志。這是一種快速查看請求耗時的方法。
你可以聚合訪問日志以查看最流行/最快/最慢的端點是什么。不過,通過命令行執(zhí)行此操作可能很耗時。
對于小型數(shù)據(jù)集,你可以使用像ApacheViewer這樣的桌面工具,但對于暫存和生產(chǎn)環(huán)境,托管日志記錄解決方案是理想的。跟蹤失敗的請求也非常有用,可以通過聚合HTTP響應(yīng)代碼來完成。
桌面工具:AWStats和ApacheViewer
托管工具:ELK堆棧,Stackiy,Splunk,LogEntries
7.跟蹤所有Java異常
性能問題的最大原因之一可能是應(yīng)用程序異常。當(dāng)拋出異常時,會導(dǎo)致線程在收集堆棧跟蹤時暫停。即使是看似無害的已處理異常,在服務(wù)器負載繁重的情況下也可能導(dǎo)致巨大的性能瓶頸。匯總和監(jiān)控所有異常以發(fā)現(xiàn)關(guān)鍵問題、新錯誤并監(jiān)控一段時間內(nèi)的錯誤率非常重要。如果你想了解更多關(guān)于java的信息,可以參加java培訓(xùn)來學(xué)習(xí),可以在短時間內(nèi)獲得較快提升。
熱門工具:APM提供商、Raygun、Stackiy
8.監(jiān)控Java異常
當(dāng)試圖提高一個應(yīng)用程序的性能時,你通常不需要模擬用戶的請求,而是要監(jiān)控它的實際操作。通過在生產(chǎn)和QA環(huán)境中監(jiān)控JavaEE服務(wù)器,你能夠在問題變得太嚴(yán)重之前根據(jù)趨勢做出決策。你還可以找出響應(yīng)時間的原因,根據(jù)這些時間實現(xiàn)優(yōu)化。
JavaMelody是一個可以幫助你執(zhí)行環(huán)境監(jiān)控的工具示例。
9.記憶分析
崩潰后的應(yīng)用程序內(nèi)存分析可以幫助確定內(nèi)存泄漏的原因。你可以通過向JVM添加以下參數(shù)來指示JVM在OutOfMemoryError異常上轉(zhuǎn)儲堆:
-XX:+HeapDumpOnOutOfMemoryError
堆轉(zhuǎn)儲文件可以加載到分析器EclipseMAT中。你可以深入查看Overview或LeaksSuspects報告,以幫助確定內(nèi)存異常的原因。
總結(jié)
在了解了這些寬泛的類別之后,你將能夠分析你的特定場景,并決定適合你需求的正確工具類型。想要學(xué)習(xí)java更多知識和技能,可以考慮參加java培訓(xùn),有經(jīng)驗豐富的專業(yè)講師指導(dǎo)教學(xué),有緊跟市場需求的實時課程,可以讓你快速掌握這門技術(shù),節(jié)約時間,少走彎路。