壓力測(cè)試工具
測(cè)試指標(biāo)
- 吞吐(qps)
- .avg響應(yīng)時(shí)間及.99(.999)響應(yīng)時(shí)間
- 失敗率
- 超時(shí)率
- 性能瓶頸(using stack analysis)
- 系統(tǒng)資源占用(cpu, mem, 線程數(shù), io, net, lsof, netstat, etc.)
- 數(shù)據(jù)下載時(shí)間
- 服務(wù)啟動(dòng)時(shí)間
指標(biāo)確定
- 新增接口:pv預(yù)估with pm, 一般要求.99在1s內(nèi)
- 改動(dòng)接口: 一般不應(yīng)差于線上
測(cè)試內(nèi)容
- 服務(wù)啟動(dòng)時(shí)間測(cè)試
- 服務(wù)從啟動(dòng)到可正常服務(wù)的時(shí)間(多少分鐘多少秒)
- 接口測(cè)試
- 負(fù)載測(cè)試(load testing)
- 在不同負(fù)載下的性能情況, 判斷能否達(dá)到預(yù)期指標(biāo)
- 系統(tǒng)瓶頸測(cè)試
- 在服務(wù)性能范圍之外高并發(fā)打壓測(cè)試服務(wù), 取stack, 分析系統(tǒng)瓶頸, 并判斷是否可改進(jìn)
- 最大性能測(cè)試(stress testing)
- 給出瓶頸項(xiàng)在一定指標(biāo)下, 系統(tǒng)的最大性能吊档,以及壓力增大時(shí)可能的解決方案(如瓶頸為cpu, 則可給出load在小于cpu核數(shù)時(shí)的性能情況, 解決方案即為換用cpu更強(qiáng)【核數(shù)多或處理能力強(qiáng)】的機(jī)器或負(fù)載均衡)
- 依賴項(xiàng)測(cè)試(假設(shè)A依賴B)
- 強(qiáng)弱依賴關(guān)系測(cè)試
- B異常(超時(shí), 接口exception等異常)時(shí)A是否能合理處理
- B異常時(shí)打壓A, A的性能(線程數(shù)、連接數(shù))是否合理, 原則: 盡量少的影響用戶功能, 盡大可能的保證服務(wù)內(nèi)部正常
- 異常測(cè)試
- 可用access log作為query進(jìn)行該測(cè)試
- 對(duì)服務(wù)進(jìn)行打壓, 找出日志中所有的exception
- 統(tǒng)計(jì), 分析各種exception是否正常, 與開發(fā)溝通
- 分析測(cè)試服務(wù)access log中服務(wù)器狀態(tài)異常的用戶請(qǐng)求, 與開發(fā)溝通, 并應(yīng)盡量避免500, 503等錯(cuò)誤(老接口可用線上access log作為query進(jìn)行該測(cè)試)
- 穩(wěn)定性測(cè)試
- 模擬線上情況(各接口的比例)
- cpu占用及l(fā)oad
- gc情況
- 線程數(shù)
- io
- net
- 判斷是否有定時(shí)任務(wù)的影響
- 內(nèi)存使用測(cè)試
- 取jmap -dump:file=mem.dump <pid>, 再用mat分析其中top10(或topN)的對(duì)象流强,判斷其數(shù)量及大小是否合理
- 模擬線上情況(各接口的比例)
檢查
- db索引檢查
- 連接池線程池的檢查
- 代碼嚴(yán)重靜態(tài)bug檢查, husdon + findbugs
- 代碼質(zhì)量:?jiǎn)卧獪y(cè)試通過率及覆蓋率借宵、代碼重復(fù)率茫经、注釋率等
注意事項(xiàng)
- 不對(duì)線上服務(wù)打壓力(注意依賴關(guān)系)
- 測(cè)試環(huán)境與線上環(huán)境的一致性
- 物理環(huán)境
- 數(shù)據(jù)量(mysql, index, etc.)
- 熟悉代碼及功能娱局,保證代碼分支的覆蓋程度
工具
- vmstat
- vmstat reports information about processes, memory, paging, block IO, traps, and cpu activity.
- jstack
- 分析java進(jìn)程各線程的狀態(tài)
- stackAnalysis
- 未發(fā)布到github, 敬請(qǐng)期待
- pstack
- 分析進(jìn)程各線程狀態(tài),對(duì)任何pid均可使用
- strace
- 查看分析系統(tǒng)調(diào)用
- jstat
- java進(jìn)程統(tǒng)計(jì)性的監(jiān)控工具(包括gc情況)
- jconsole
- 觀察java進(jìn)程內(nèi)存泪漂、cpu等的詳細(xì)使用情況
- visualvm
- 更NB的jconsole+jstat
-
stress
- 對(duì)機(jī)器的虛擬壓力使用工具(如占用多少內(nèi)存多少cpu多長(zhǎng)時(shí)間)
- 見love39: /disk1/xjyin/tools/
-
gcviewer
- 分析gclog
- jmap
- 分析java進(jìn)程內(nèi)存
- jhat
- 分析java進(jìn)程內(nèi)存: 會(huì)有詳細(xì)的結(jié)果
-
mat若在機(jī)群上可以配合vnc使用
- 更NB的jhat, 一般用于內(nèi)存泄露等對(duì)內(nèi)存較為詳細(xì)的分析