1. 程式人生 > >Java效能測試從入門到放棄-概述篇

Java效能測試從入門到放棄-概述篇

Java效能測試從入門到放棄-概念篇

輔助工具

  • Jmeter: Apache JMeter是Apache組織開發的基於Java的壓力測試工具。用於對軟體做壓力測試。JMeter 可以用於對伺服器、網路或物件模擬巨大的負載,來自不同壓力類別下測試它們的強度和分析整體效能。另外,JMeter能夠對應用程式做功能/迴歸測試

  • 簡書有個不錯的作者寫了一個Jmeter的系列:倔強的瀟灑小姐

  • 火焰圖:火焰圖是用來展示CPU呼叫堆疊的SVG圖片。

  1. y 軸表示呼叫棧,每一層都是一個函式。呼叫棧越深,火焰就 越高,頂部就是正在執行的函式,下方都是它的父函式。

  2. x 軸表示抽樣數,如果一個函式在 x 軸佔據的寬度越寬,就表示它被抽到的次數多,即執行的時間長。注意,x 軸不代表時間,而是所有的呼叫棧合併後,按字母順序排列的。

  3. 火焰圖就是看頂層的哪個函式佔據的寬度最大。只要有"平頂"(plateaus),就表示該函式可能存在效能問題。

  4. 顏色沒有特殊含義,因為火焰圖表示的是 CPU 的繁忙程度,所以一般選擇暖色調。

  • 鏈路追蹤:鏈路跟蹤其實就是將一次分散式請求還原成呼叫鏈路。顯式的在後端檢視一次分散式請求的呼叫情況,比如各個節點上的耗時、請求具體打到了哪臺機器上、每個服務節點的請求狀態、每次資料庫操作等等。在進行效能的時候,可以通過鏈路跟蹤平臺記錄的介面耗時情況分析效能瓶頸,進行鍼對性的優化。目前主要使用的是 opentracing 協議,主流的實現有 zipkin 和 jaeger。

概念

  • 效能測試:通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項效能指標進行測試。
  • 壓力測試:通過確定一個系統的瓶頸或者不能接受的效能點,來獲得系統能提供的最大服務級別的測試
  • 負載測試:不限制軟體的執行資源,測試軟體的資料吞吐量上限,以發現設計上的錯誤或驗證系統的負載能力。評測和評估測試物件在不同工作量條件下的效能行為,以及持續正常執行的能力。
  • 穩定性測試:被測試系統在特定硬體、軟體、網路環境條件下,給系統載入一定業務壓力,使系統執行一段較長時間,以此檢測系統是否穩定,一般穩定性測試

指標

  • CPU: CPU 利用率要低於業界警戒值範圍之內,即小於或者等於75%。
  • 記憶體:記憶體使用率並不能實際反映系統執行情況。主要要關注記憶體交換區佔比,一般認為70%為臨界值,在壓力,負載測試下要保證記憶體可用
  • 磁碟:磁碟指標主要有每秒讀寫多少兆,磁碟繁忙率,磁碟佇列數,平均服務時間,平均等待時間,空間利用率。其中磁碟繁忙率是直接反映磁碟是否有瓶頸的的重要依據,一般情況下,磁碟繁忙率要低於70%
  • 響應時間:不同業務的可接受響應時間不同,網際網路企業普通介面應低於500ms。
  • 穩定性:一般在n*12的時間範圍內,系統應保持穩定
  • CPU,記憶體指標可通過HTOP,jconsole指令檢視

參考文獻

  • 效能測試的指標:https://blog.csdn.net/alice_tl/article/details/79967932
  • 阿里雲測試指標:https://help.aliyun.com/document_detail/29338.html