雙 11 全鏈應用:JVM 性能測試之測試分析與調優

適用於需要進行性能分析及調優的工作。預期讀者爲測試管理人員、測試實施人員、技術支持人員、項目質量管理人員、項目管理人員等系統技術質量相關人員。

2|0 性能分析

前提

流程

具體如下圖所示:

可能瓶頸點

方法

CPU

CPU 資源利用率很高的話,需要看 CPU 消耗 User、Sys、Wait 哪種狀態。

操作系統爲了最大化利用內存,一般都設置大量的 cache,因此,內存利用率高達 99% 並不是問題,內存的問題主要看某個進程佔用的內存是否非常大以及是否有大量的 swap(虛擬內存交換)。

磁盤 I/O 一個最顯著的指標是繁忙率,可以通過減少日誌輸出、異步或換速度快的硬盤來降低繁忙率。

網絡 I/O 主要考慮傳輸內容大小,不能超過硬件網絡傳輸的最大值 70%,可以通過壓縮減少內容大小、在本地設置緩存以及分多次傳輸等操作提高網絡 I/O 性能。

內核參數一般都有默認值,這些內核參數默認值對於一般系統沒問題,但是對於壓力測試來說,可能運行的參數將會超過內核參數,導致系統出現問題,可以用 sysctl 來查看及修改。

JVM 主要分析 GC/FULL GC 是否頻繁,以及垃圾回收的時間,可以用 jstat 命令來查看,對於每個代大小以及 GC 頻繁,通過 jmap 將內存轉儲,再借助工具 HeapAnalyzer 來分析哪地方佔用的內存較高以及是否有內存泄漏可能。簡單點可以使用 APM 工具,例如阿里雲 ARMS。

如果線程不夠用,可以通過參數調整,增加線程;對於線程池中的線程設置比較大的情況,還是不夠用可能的原因是:某個線程被阻塞來不及釋放,可能在等鎖、方法耗時較長、數據庫等待時間很長等原因導致,需要進一步分析才能定位。

連接池不夠用的情況下,可以通過參數進行調整增加;但是對於數據庫本身處理很慢的情況下,調整沒有多大的效果,需要查看數據庫方面以及因代碼導致連接未釋放的原因。

SQL 效率低下也是導致性能差的一個非常重要的原因,可以通過查看執行計劃看 SQL 慢在哪裏,一般情況,SQL 效率低下原因主要有:

3|0 調優

調優步驟

確定問題

分析問題

通過這些分析及一些與系統相關的問題,可以對系統瓶頸有更深入的瞭解,進而分析出真正的原因。

高系統吞吐量,縮短響應時間,更好地支持併發。

對通過解決方案調優後的系統進行基準測試。(基準測試是指通過設計科學的測試方法、測試工具和測試系統,實現對一類測試對象的某項性能指標進行定量的和可對比的測試)。

系統調優是否達到或者超出了預定目標;系統是整體性能得到了改善,還是以系統某部分性能來解決其他問題;調優是否可以結束了。最後,如果達到了預期目標,調優工作可以先告一段落。

調優注意事項

來源:

https://www.toutiao.com/a7029571614383817229/?log_from=f838c29923f9c_1636939626747

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/LzaVP0iq9jMrblfLNChxzg