如何解讀性能測試監(jiān)控結果
下方查看歷史精選文章
大數據測試過程、策略及挑戰(zhàn)
在性能測試系列前面幾篇文章中我們比較詳細的介紹了相關的知識
所有性能相關的文章,均會同步發(fā)布至性能測試專用公眾號,大家可以關注,以免錯過
通過前面的系列文章,我們已經知道了如何開展性能測試,但還沒有告訴大家如何對性能測試結果進行分析和解讀,本文將帶領大家對性能測試結果進行正確的解讀。在進行性能測試結果解讀前,我假設你在測試需求階段已經設定了合理的性能測試目標,并且已經在性能測試實施過程中記錄了相應的結果。
我們將通過下面幾個方面來解讀我們的性能測試監(jiān)控結果。
1. 性能測試過程分析
2. 性能測試輸出結果分析
3. 瓶頸根源分析
4.?性能測試分析檢查表
性能測試過程分析
在這個過程中,我們主要分析兩個部分:性能測試執(zhí)行階段的實時分析和測試結束后的時候分析。
在性能測試執(zhí)行階段的實時分析,我們主要借助KPI監(jiān)控工具,筆者推薦你使用zabbix構建基礎指標的監(jiān)控,在過程中實時查看基本指標的數據,如果發(fā)現數據波動異常,則用yourkit java profiler掛上去,深入分析各指標,通過使用這兩個工具的能力,我們能深入的分析其中的問題,并結合與開發(fā)、運維的進一步深入溝通交流,以定位、分析、診斷問題所在,從而為調優(yōu)確定相應的方案。
不管怎么樣,我們都期望能夠監(jiān)控、分析以下指標:
1. 以圖形或表格的方式展示性能測試中每個用例的響應時間
2.?監(jiān)控每個腳本的的虛擬用戶的增長以及整個測試過程所用到的虛擬用戶數
3.?監(jiān)控施壓機的狀態(tài),以免因施壓機過載出現不必要的誤會
4.?監(jiān)控服務的CPU\IO\MEM\網絡吞吐等指標
5.?了解整個性能測試執(zhí)行過程中的所有錯誤,包括但不限于請求失敗、錯誤等等
測結束后的事后分析,我們需要對測試過程中所采集的數據進行全面的、深入的分析。這意味著我們在很大程度上需要依賴已經保存好的測試結果數據。
從實踐來看,事后分析也要結合實時分析的來進行,主要從以下幾個方面考慮:
?結合實時分析過程中的一些問題,深入挖掘性能瓶頸
與開發(fā)、運維等相關人員,就一些問題進行深入探討,定位、分析、確定解決方案
要注意的是,我們要盡可能的采用業(yè)界通用的、專業(yè)的監(jiān)控工具,這樣我們才能擁有盡可能完整的監(jiān)控數據,避免使用偏僻的、便宜的工具。
性能測試輸出結果分析
數據統(tǒng)計分析是所有性能測試工具的核心,也是我們對結果形成系統(tǒng)化的、結構化的分析的核心。所以我們必須具備一定的數據統(tǒng)計分析的一些基礎知識。例如:
1.?統(tǒng)計學基礎,要理解什么是平均數、中位數、標準差、正態(tài)分布、百分位數
2. 了解響應時間的一些基本準則,例如2/5/10響應時間,即2秒、5秒、10秒用戶響應時間的體驗是怎么樣的,但要注意其中思考時間對其的影響
3. 了解吞吐率和容量,吞吐率關注一些特定用例執(zhí)行的速度,容量則關注在單位時間內能夠處理多少請求。
4. 關鍵性能監(jiān)控指標,通過這些指標我們可以分析服務器或網絡的性能等等
5.?JVM指標,通過監(jiān)控分析jvm的性能指標,我們可以進一步的深入堆棧、線程等等性能表現
6.?基準指標,主要關注服務端CPU\IO\MEM等等,以深入確定服務的負載變化情況
7. 關鍵網絡指標,我們主要關注服務接收到的數據量等
8. 施壓機性能,關注施壓機的性能,以免出現因施壓機的瓶頸導致了我們誤判、甚至錯誤的分析
瓶頸根源分析
為了確定服務是否具備良好的性能,我們需要關注哪些方面呢?
1. 通過暴增/遞增/遞減虛擬用戶等模式,來確定負載、吞吐率、響應時間等待,以了解服務在不同模式下的性能表現
2.?最好將源碼與監(jiān)控工具關聯起來,這樣有性能瓶頸的狀態(tài)下,能通過工具的自動化能力,初步的將異常的指標與可能的瓶頸源碼關聯,便于我們深入挖掘、分析、定位、診斷瓶頸,進一步確定調優(yōu)方案
3.?為了對服務進一步分析,我們經常需要獲取服務瓶頸狀態(tài)下的堆棧信息、線程鎖等信息
4. 尋找性能拐點,通過性能拐點,我們可以快速的確定性能分析重點切入點
5.?性能過程中的錯誤信息,很多時候,在性能測試過程中發(fā)現的錯誤信息能帶領我們直接找到問題所在
6. 沒有對比就沒有傷害,建立合適的性能測試基線,使我們對瓶頸分析的基礎
性能測試分析檢查表
為了系統(tǒng)的、結構化的分析性能,我們要根據性能測試目標,建立起相應的性能分析檢查表。主要從三個方面來建立起檢查表:
1.?測試前檢查表
-?服務配置、監(jiān)控指標等,確保服務的配置正確,相關指標能正確獲取
-?確定性能測試類型,要進行哪些性能測試,虛擬用戶增加模式等等
-?確保壓力機可正常壓測
-?性能監(jiān)控工具相關閾值設置正確
-?監(jiān)控工具與代碼關聯
-?性能監(jiān)控數據可正常存入指定的服務或目錄
2. 測試執(zhí)行過程檢查表
-?記錄好每次性能測試執(zhí)行的結果,通過這個都會利用工具的自動記錄能力
-?記錄好測試數據、結果,并進行簡要的描述
-?記錄好突然出現的錯誤、異常
-?記錄好異常的指標,例如突然下降的吞吐率、過長的響應時間等
-?記錄好持續(xù)增長的CPU、內存、IO消耗等
-?運維、開發(fā)人員的聯系方式,做好隨時請求他們的支撐
3.?測試結束后檢測表
在性能測試工作結束后,我們通常還是需要做一些掃尾工作,以便后續(xù)再次開展或進一步回溯性能測試工作,主要有以下幾個方面的工作:
-?不管性能測試實施結果如何,我們都需要將性能測試過程中搜集的數據進行備份,存檔
-?將性能測試腳本、數據、結果存檔
-?根據目標群體,撰寫合適的性能測試報告
-?總結回顧本次性能測試,為后續(xù)性能測試提供參考和規(guī)避可能的坑


