性能測(cè)試相關(guān)工具及規(guī)范

壓力測(cè)試工具

測(cè)試指標(biāo)

  • 吞吐(qps)
  • .avg響應(yīng)時(shí)間及.99(.999)響應(yīng)時(shí)間
  • 失敗率
  • 超時(shí)率
  • 性能瓶頸(using stack analysis)
  • 系統(tǒng)資源占用(cpu, mem, 線(xiàn)程數(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)差于線(xiàn)上

測(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ù)載均衡)
  • 依賴(lài)項(xiàng)測(cè)試(假設(shè)A依賴(lài)B)
    • 強(qiáng)弱依賴(lài)關(guān)系測(cè)試
    • B異常(超時(shí), 接口exception等異常)時(shí)A是否能合理處理
    • B異常時(shí)打壓A, A的性能(線(xiàn)程數(shù)、連接數(shù))是否合理, 原則: 盡量少的影響用戶(hù)功能, 盡大可能的保證服務(wù)內(nèi)部正常
  • 異常測(cè)試
    • 可用access log作為query進(jìn)行該測(cè)試
    • 對(duì)服務(wù)進(jìn)行打壓, 找出日志中所有的exception
    • 統(tǒng)計(jì), 分析各種exception是否正常, 與開(kāi)發(fā)溝通
    • 分析測(cè)試服務(wù)access log中服務(wù)器狀態(tài)異常的用戶(hù)請(qǐng)求, 與開(kāi)發(fā)溝通, 并應(yīng)盡量避免500, 503等錯(cuò)誤(老接口可用線(xiàn)上access log作為query進(jìn)行該測(cè)試)
  • 穩(wěn)定性測(cè)試
    • 模擬線(xiàn)上情況(各接口的比例)
      • cpu占用及l(fā)oad
      • gc情況
      • 線(xiàn)程數(shù)
      • io
      • net
      • 判斷是否有定時(shí)任務(wù)的影響
    • 內(nèi)存使用測(cè)試
      • 取jmap -dump:file=mem.dump <pid>, 再用mat分析其中top10(或topN)的對(duì)象,判斷其數(shù)量及大小是否合理

檢查

  • db索引檢查
  • 連接池線(xiàn)程池的檢查
  • 代碼嚴(yán)重靜態(tài)bug檢查, husdon + findbugs
  • 代碼質(zhì)量:?jiǎn)卧獪y(cè)試通過(guò)率及覆蓋率、代碼重復(fù)率、注釋率等

注意事項(xiàng)

  • 不對(duì)線(xiàn)上服務(wù)打壓力(注意依賴(lài)關(guān)系)
  • 測(cè)試環(huán)境與線(xià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)程各線(xiàn)程的狀態(tài)
  • stackAnalysis
  • 未發(fā)布到github, 敬請(qǐng)期待
  • pstack
    • 分析進(jìn)程各線(xiàn)程狀態(tài),對(duì)任何pid均可使用
  • strace
    • 查看分析系統(tǒng)調(diào)用
  • jstat
    • java進(jìn)程統(tǒng)計(jì)性的監(jiān)控工具(包括gc情況)
  • jconsole
    • 觀(guān)察java進(jìn)程內(nèi)存、cpu等的詳細(xì)使用情況
  • visualvm
    • 更NB的jconsole+jstat
  • stress
    • 對(duì)機(jī)器的虛擬壓力使用工具(如占用多少內(nèi)存多少cpu多長(zhǎng)時(shí)間)
    • 見(jiàn)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ì)的分析
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容