奧推網

選單
科技

5 個Java 效能分析技巧,可幫助調整 JVM

最佳化 JVM 吞吐量和避免執行時瓶頸的最佳方法是將 Java 效能分析作為團隊持續開發和部署 (CI/CD) 策略的關鍵部分。以下是五個 Java 效能分析技巧和最佳實踐,可幫助你充分利用本地硬體和雲託管執行時環境。

1。 永遠不要關閉Java效能分析

Java Flight Recorder 是一個非常高效的 Java 效能分析工具,直接內建在 JVM 中。它是輕量級的,對正在執行的應用程式的影響最小。

預設設定對效能的影響不到 1%,而即使是最極端的資料收集設定,其消耗也僅略高於 2%。鑑於任何生產伺服器都不應該在任何延長的時間內承受 50% 的負載這一事實,應該始終有足夠的可用資源來保持 Java Flight Recorder 在後臺執行。

這種配置的好處是,當發生 JVM 崩潰或應用程式遇到災難性的執行時故障時,可以檢視導致災難的所有事件的記錄。即使在負載較重的生產系統上,Java 效能分析器也應該始終執行。事實上,當 JVM 處於極端負載下時,正是從 Java 效能分析工具獲取的指標最有用的時候。

2。 知道何時選擇取樣而不是儀器

有兩種不同的方法來監視和分析 JVM:取樣和檢測。

使用取樣方法的 Java 效能分析器將在執行時對 JVM 施加更可預測的負載。因此,在 JVM 的位元組碼呼叫中搜索模式時,最好使用基於取樣的分析器。

儀器分析儀更精確,並且在其應用中更具外科手術性。藉助儀器,軟體架構師可以將額外的程式碼或元件新增到系統中。他們將這些工具新增到他們認為可能是效能問題來源的位置。因為儀器被插入到應用程式程式碼中或嵌入在 JVM 中,所以每次遇到時都會觸發它們。

當你很好地瞭解問題是什麼以及問題在程式碼庫中的位置時,基於檢測的分析器往往會更有效。戰略性地使用取樣和基於檢測的分析器將帶來最佳的 Java 效能最佳化結果。

3。 使用 AI 增強 JVM 效能問題分析

無論是記憶體洩漏還是執行緒死鎖,大多數 Java 效能問題都遵循眾所周知的行為模式。在花費大量時間檢查 JVM 堆直方圖或檢查 Java GC 暫停時間之前,請透過可以將某種程度的 AI 應用於檔案的分析工具執行 Java 效能分析器資料。

大多數 Java 效能分析工具將能夠快速對困擾你的應用程式的瓶頸型別進行分類,甚至可以識別出降低吞吐量和延遲的實際程式碼行。

4。 在版本控制中保持效能基準

效能資料歷史將幫助你識別 Java 效能指標中的模式。

為你的應用程式建立一個性能測試套件,將其作為每個持續整合構建的一部分執行,並確保你在後臺打開了 Java Flight Recorder。然後將生成的 Flight Recorder 資料檔案作為 CI/CD 構建的一部分儲存在 Git 或 GitHub 中。

這種 Java 效能分析策略不僅為你的應用程式建立了一個性能基準,而且還為你提供了一個歷史記錄,你可以在其中檢視趨勢如何隨著時間的推移而出現。你可能無法從一個 sprint 到下一個 sprint 中識別出一個迫在眉睫的效能問題,但是在一系列幾周或幾個月內比較 JVM 分析器資料將有助於發掘模式。

此外,告訴開發人員,如果效能指標超出可接受的範圍,那麼它被認為是一個損壞的構建。讓開發人員在開發生命週期的早期考慮非功能性需求,例如效能和安全性。

5。 現代化你的 Java 分析工具

當談到 Java 效能分析工具時,不要拘泥於自己的方式。

10 年前可能對部署到 WebSphere 或 Tomcat 伺服器的應用程式進行故障排除有效的工具在對部署到 Docker 容器的基於微服務的應用程式進行故障排除方面將不那麼有效。在過去的 10 年中,應用程式開發、設計和部署的世界發生了巨大變化,你使用的 Java 效能分析工具也需要隨之改變。

VisualVM 仍然是一種流行的 Java 效能分析和監控工具,但 Java Mission Control 等新的分析工具提供了視覺化和檢查 JVM 指標的更新方法。當位元組碼封裝在 Docker 容器中並部署到 Kubernetes 叢集時,許多供應商專門分析 JVM 執行時。始終確保你使用的分析工具符合你的 Java 效能分析需求。

堅持這些 Java 效能分析技巧,並在即將出現的可能會降低應用程式吞吐量的 JVM 瓶頸之前保持領先一步。