性能測試目的
簡單來說:在復(fù)雜多變情況下,保證系統(tǒng)穩(wěn)定
百度百科說:
- 評估系統(tǒng)的能力囱皿,測試中得到的負荷和響應(yīng)時間數(shù)據(jù)可以被用于驗證所計劃的模型的能力,并幫助作出決策。
- 識別體系中的弱點:受控的負荷可以被增加到一個極端的水平低葫,并突破它,從而修復(fù)體系的瓶頸或薄弱的地方仍律。
- 系統(tǒng)調(diào)優(yōu):重復(fù)運行測試嘿悬,驗證調(diào)整系統(tǒng)的活動得到了預(yù)期的結(jié)果,從而改進性能水泉。
檢測軟件中的問題:長時間的測試執(zhí)行可導(dǎo)致程序發(fā)生由于內(nèi)存泄露引起的失敗善涨,揭示程序中的隱含的問題或沖突。 - 驗證穩(wěn)定性(resilience)可靠性(reliability):在一個生產(chǎn)負荷下執(zhí)行測試一定的時間是評估系統(tǒng)穩(wěn)定性和可靠性是否滿足要求的唯一方法草则。
性能測試方案關(guān)鍵點
- 業(yè)務(wù)系統(tǒng)分析:根據(jù)業(yè)務(wù)和系統(tǒng)運維實際情況钢拧,分析TPS的時間分布圖、HPS/PV的時間分布圖
<center>
<div style="color:orange; border-bottom: 1px solid #d9d9d9;
display: inline-block;
color: #999;
padding: 1px;">ELK獲取TPS時間分布</div>
</center>
- 場景設(shè)計:根據(jù)實際的數(shù)據(jù)容量炕横,業(yè)務(wù)類型比例源内,業(yè)務(wù)時段,業(yè)務(wù)量來綜合設(shè)計性能測試場景份殿。舉例來說膜钓,某APP在12點-14點是交易峰值,占用全天交易的80%卿嘲,那可以抽取這個時間段內(nèi)的業(yè)務(wù)類型比例呻此,產(chǎn)生的比例是,登錄:加入購物車:交易:查詢訂單=10:3:1:6腔寡,那在做性能測試場景設(shè)計的時候可以采用這一比例進行測試焚鲜。
- 監(jiān)控模型建立:
服務(wù)器監(jiān)控
數(shù)據(jù)庫監(jiān)控
Docker監(jiān)控
JVM監(jiān)控Grafana
JVM監(jiān)控VisualVM
- 性能問題分析和調(diào)優(yōu):
數(shù)據(jù)庫問題分析
堆內(nèi)存泄漏排查
死鎖問題排查
JVM分析
Arthas調(diào)優(yōu)工具
性能測試通過標準
超時概率:小于0.5‰
錯誤概率:小于0.5‰
TPS:大于期望高峰值
CPU利用率:小于75%
響應(yīng)時間:小于期望時間
Load負載:平均沒核CPU的Load小于1
JVM內(nèi)存使用率:小于80%
FullGC頻率:平均大于半小時1次
性能測試結(jié)果圖識別
TPS和響應(yīng)時間曲線抖動不能過于強烈,具備一定梯度放前,整體趨勢應(yīng)該是趨近與平穩(wěn)
如下圖在線程數(shù)增加的時候忿磅,TPS一個比較正常的圖示,持續(xù)增加后凭语,在13000TPS的位置趨近平穩(wěn)葱她,有一定梯度
如下TPS和響應(yīng)時間的圖例,可以用作正常類參考
如下圖在線程數(shù)增加的時候似扔,響應(yīng)時間在1s一下緩慢增漲吨些,當TPS到達高點13000以后搓谆,隨時線程持續(xù)增加,響應(yīng)時間增速加劇
不太合理的TPS圖
波動幅度劇烈豪墅,找不到TPS的穩(wěn)定峰值泉手,不利于問題分析,性能測試結(jié)果不準確
梯度不明顯偶器,可以考慮增加Ramp-up斩萌,讓TPS增幅變緩,否則響應(yīng)時間的圖也不會出現(xiàn)穩(wěn)定期屏轰,較難做出峰值判斷
TPS在某些點有突然下降颊郎,需要做出排查
公號:大道測試