測試經常使用指標及工具

測試,是一個挺專業的事情。php

1. 系統性能定義

性能測試指標

  • Throughput:吞吐量,系統每秒鐘能夠處理的請求數,任務數。
  • Latency:系統延遲,系統在處理一個請求或一個任務時的延遲。
  • TPS:每秒響應的任務數量。

考察系統性能時須要同時考慮上面的性能指標。好比最多容許 2 秒之內的延遲時,系統最多能夠承受多大併發。在描述系統性能時,響應時間參數必須和吞吐量掛鉤,單純的響應時間意義不大。html

這兩個性能指標之間互相有影響:ios

  • Throughput 增大會致使 Latency 增大,請求越多系統負載越高,延遲越大。
  • Latency 越小則系統的 Throughput 就越高,Latency 小則說明處理請求的速度快,能夠處理更多的請求。

某些測試可能還會有平均值和成功率這兩個性能指標。git

性能測試方法

  • 負載測試
  • 壓力測試
  • 配置測試
  • 併發測試
  • 可靠性測試

2. 系統性能測試

測試以前必須首先要明確需求。對於不一樣系統,要求的 Throughput 和 Latency 會有所不一樣。完整的測試流程以下:github

  • 明確 Latency:不一樣業務能夠有不一樣的響應時間,例如能夠設定爲 2 秒。
  • 制定測試方法:選擇一個向系統施加指定的 Throughput 的壓力測試工具(參考下面),選擇一個測量 Latency 的工具(例如 Fiddler、Wireshark)。
  • 開始性能測試並彙總數據:不斷提高 Throughput,看看系統負載狀況,判斷系統是否正常。若是系統在指定 Throughput 下未宕機,則記錄 Latency。Throughput 增大到必定大小後,Latency 會開始抖動,一般會把 95% 的請求在指定的 Latency 內獲得響應時對應的 Throughput 做爲一個重要閾值。
  • 分析結果:將結果彙總成圖標。

經常使用的壓力測試工具備:
- JMeter(Java 桌面應用,開源穩定且生態完善,併發差)
- wrk(簡單的 http 性能測試工具)
- Loadrunner(收費,目前屬於 microfocus)
- webbench(只支持 Linux,最多能夠模擬3萬個併發鏈接)
- http_load(程序小巧,資源佔用少)
- ab(Apache 集成,簡單功能少)
- tcpcopy(開源,生態活躍)
- 壓測大師(將測試打包成服務,在雲端直接使用)。web

性能測試時,每一個 Throughput 的壓力須要持續一段時間,尤爲是在閾值附件的 Throughput,可能須要幾個小時甚至幾天的壓測。shell

3. 查找系統瓶頸

3.1 查看操做系統負載

看操做系統負載,就是看操做系統的 CPU 利用率、內存使用率、磁盤 IO、網絡 IO。Linux 下經常使用的命令和工具備:SystemTap(查看內核信息,參考 這裏),iostat, top, tcpdump 等。apache

關於 CPU,多核 CPU 中的 CPU0 在執行普通任務的同時還負責核間調度,所以要確保其負責不能太高。
關於 IO,IO 使用率高時 CPU 使用率通常就比較低,程序通常會交替佔用 CPU 或 IO。性能優化

3.2 使用 Profiler 測試

系統中 80% 的運行時間花在了 10% 的代碼上,找出那些頻繁調用的代碼並優化能夠事半功倍。網絡

測試時,能夠在代碼中使用計時器和函數調用計算器作統計並定時寫入日誌,也能夠分塊註釋進行測試以查找問題代碼段。

Profiler 測試工具:

  • Perf:Linux kernel 自帶的系統性能優化工具,與 Linux Kernel 緊密結合。能夠按進程、CPU 或 counter group 等不一樣類別來查看信息,對代碼優化到 CPU 的微指令級別。
  • xhprof:PHP 語言的輕量級分層性能測量分析器,輕量,可在生產環境部署。參考 這裏

4. 性能調優

參考 性能調優攻略

相關文章
相關標籤/搜索