性能測試技能樹

基礎:
  完整的性能測試流程
    需求-計劃-方案-環境搭建-用例設計-數據準備-場景設計-腳本開發-腳本執行-結果分析-問題反饋-性能調優-結果報告
  性能指標
    TPS,QPS,RPS,HPS,RT,VU,ERROR
  測試類型
    壓力測試,負載測試,併發測試,spike測試,穩定性測試,破壞性測試,驗收測試
工具:html

  jmeter工做原理
  經常使用的元件,插件
  jmeter如何設計腳本(線程組,各類請求,定時器,參數化,關聯,斷言)
  jmeter測試報告
  jmete設計典型性能測試場景linux

其它工具
  wrk,ab,httpload,webbench,siege
服務器/中間件
  JVM原理和配置、堆棧原理、GC原理、FullGc,OOM
  Tomcat配置、使用方法、啓動參數配置
  Nginx配置、使用方法
    Dubbo服務註冊、消息隊列
服務器硬件資源
  cpu,磁盤,網絡,內存,load和利用率,IO讀寫,發包率丟包率
linux性能監聽命令
  lscpu,uptime,free,vmstat,mpstat,sysstat,netstat,iostat,pidstat,jstack,jmap
數據庫
  鎖,索引,讀寫分離,分庫分表,Nosql
線程狀態
  就緒(Runnable),運行(Running),阻塞(Blocked)
可能的瓶頸點
  硬件,中間件,程序,操做系統,網絡設備
  cpu,內存,磁盤,網絡,jvm,線程池,jdbc鏈接池
OOM異常信息
  OutOfMemoryError: Java heap space (堆內存不夠)
  OutOfMemoryError: GC overhead limit exceeded (代碼內存過大或死循環)
  OutOfMemoryError: PermGen space (perm內存不夠)
  OutOfMemoryError: Direct buffer memory (線程棧過小)ios

性能測試分析
  錯誤提示分析
    OutOfMemoryError: Java heap space (堆內存不夠)
    OutOfMemoryError: GC overhead limit exceeded (代碼內存過大或死循環)
    OutOfMemoryError: PermGen space (perm內存不夠)
    OutOfMemoryError: Direct buffer memory (線程棧過小)
指標監控分析
  cpu瓶頸
    響應時間慢
    空閒時間高(idle)
    系統佔用高(sys)
    用戶佔用高(usr)
    運行隊列長(r)
    load長期大於cpu個數
  內存瓶頸
    交換率太高(swap)
    系統cpu利用率很高
    內存溢出(OOM)
  磁盤瓶頸
    磁盤利用率高
    等待隊列過長(avgqu-sz)
    等待IO的百分比太高(await))
    用於IO的時間比例太高(util)
    緩存命中率太低(buffer cache)
  JVM瓶頸
    fullgc頻繁,考慮老年代內存是否過小
    YoungGc頻繁,考慮年輕代內存是否過小
    YoungGc時間過長,程序中出現了大對象, 增長 -XX:PretenureSizeThreshold
    GC監控
     jstat -class 類加載統計
     jstat -compiler 編譯統計
     jstat -GC 垃圾回收統計
     jstat -gccapacity 堆內存統計
     jstat -gccnew 年輕代垃圾回收統計
     jstat -gccold 老年代垃圾回收統計
     jstat -gcnewcapacity 年輕代內存統計
     jstat -gcoldcapacity 老年代內存統計
     jstat -gcmetacapacity 元空間內存統計
     jstat -gcutil gc總體統計
分段排查定位分析
  服務器硬件瓶頸->網絡瓶頸->應用瓶頸->服務器操做系統瓶頸(參數配置)->中間件瓶頸(參數配置,數據庫,web服務器等)
優化方法
  使用對象池減小對象建立
  增長本地緩存
  Nosql進行存儲
  合併請求
  串行改並行
  同步改異步web

 

 

 

戳我>>>性能測試實戰分析sql

相關文章
相關標籤/搜索