簡易測試工具wrk

轉載請註明出處 http://www.paraller.com
原文排版地址 點擊跳轉git

介紹

wrk 是一個很簡單的 http 性能測試工具. 也能夠叫作 http benchmark 工具. 只有一個命令行, 就能作不少基本的 http 性能測試.github

簡單步驟

安裝

git clone https://github.com/wg/wrk.git  
cd wrk  
make

使用

wrk -t12 -c100 -d30s -T30 http://www.baidu.com 
wrk -t2 -c100 -d30s http://localhost:8081/ticket/tyj/profitList/uegjVvnL-Watj-iFBA-X4lu-OHINAkqC7Cwy
  • t: 線程數
  • c: 請求鏈接數
  • d: 測試時間,
  • T: 默認超時時間是1秒. 這個有點短. 我通常設置爲30秒

通常線程數不宜過多. 核數的2到4倍足夠了. 多了反而由於線程切換過多形成效率下降. 由於 wrk 不是使用每一個鏈接一個線程的模型, 而是經過異步網絡 io 提高併發量. 因此網絡通訊不會阻塞線程執行. 這也是 wrk 能夠用不多的線程模擬大量網路鏈接的緣由. 而如今不少性能工具並無採用這種方式, 而是採用提升線程數來實現高併發. 因此併發量一旦設的很高, 測試機自身壓力就很大. 測試效果反而降低.網絡

結果說明

Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   354.59ms  377.09ms   1.99s    83.74%
    Req/Sec    21.07     12.79    90.00     80.37%
  6957 requests in 30.10s, 102.55MB read
  Socket errors: connect 0, read 19, write 0, timeout 117
Requests/sec:    231.11
Transfer/sec:      3.41MB
  • Latency: 能夠理解爲響應時間, 有平均值, 標準誤差, 最大值, 正負一個標準差佔比.
  • Req/Sec: 每一個線程每秒鐘的完成的請求數, 一樣有平均值, 標準誤差, 最大值, 正負一個標準差佔比.
  • 通常咱們來講咱們主要關注平均值和最大值. 標準差若是太大說明樣本自己離散程度比較高. 有可能系統性能波動很大.

進階-腳本調用

post.lua
wrk.method = "POST"  
wrk.body   = "foo=bar&baz=quux"  
wrk.headers["Content-Type"] = "application/x-www-form-urlencoded"
調用
wrk -t12 -c100 -d30s -T30s --script=post.lua --latency http://www.baidu.com

參考網站

wrk -- 小巧輕盈的 http 性能測試工具.併發

相關文章
相關標籤/搜索