轉載請註明出處 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
通常線程數不宜過多. 核數的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
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