天天看點

wrk壓測工具的簡單使用

一、wrk簡介

wrk 是一種高效的 HTTP 基準測試工具,能夠在單個多核 CPU 上運作時産生大量負載。它将多線程設計與 epoll 和 kqueue 等可伸縮事件通知系統相結合,能用很少的線程壓出很大的并發量,并且可以支援lua腳本來建立複雜的測試場景(請求參數的定制,參數加密、鑒權請求等)。

二、參數說明

參數選項 參數說明
-c 總的連接配接數(每個線程處理的連接配接數=總連接配接數/線程數)
-d 測試的持續時間,如2s(2second),2m(2minute),2h(hour)
-t 使用的線程數總數
-s 加載的lua腳本檔案
-H 向請求頭添加資訊
–latency 顯示延遲統計
–timeout Socket/request 逾時時間
-v 顯示版本詳細資訊

三、壓測示例

1、wrk -t12 -c800 -d30s --latency --timeout 5s http://localhost:80/login (wrk使用12個線程,800個連接配接,測試持續時間30s,顯示延遲統計資訊,請求逾時時間為5s)

加載lua腳本檔案:

wrk -t12 -c800 -d30s --latency --timeout 5s -s post.lua http://localhost:80/login

注:

-t (線程數) 一般是CPU核數,最大不要超過CPUx2核數,否則會帶來額外的上下文切換,将線程數設定為CPU核數主要是為了WRK能最大化利用CPU,使結果更準确。
-c (連接配接數) 連接配接數(connection)可以了解為并發數,一般在測試過程中,這個值需要使用者不斷向上調試,直至QPS達到一個臨界點,便可認為此時的并發數為系統所能承受的最大并發量。

2、壓測參數簡介:

參數選項 參數說明
Latency 響應時間
Req/Sec 每個線程每秒鐘的執行的連接配接數
Avg 平均值
Max 最大值
Stdev 标準差
+/- Stdev 正負一個标準差占比
Latency Distribution 響應時間分布
Requests/sec 每秒請求數(也就是QPS),壓力測試的性能名額,通過這個參數可以看出吞吐量
Transfer/sec 每秒傳輸資料量
[[email protected] nginx]# wrk -t4  -c100  -d30s  --latency --timeout 3s http://127.0.0.1:80/
Running 30s test @ http://127.0.0.1:80/
  4 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     9.97ms   34.84ms 362.77ms   94.41%
    Req/Sec    16.50k     9.78k   57.92k    67.88%
  Latency Distribution
     50%    1.01ms
     75%    3.64ms
     90%   10.41ms
     99%  198.52ms
  1898844 requests in 30.09s, 6.97GB read
Requests/sec:  63106.40
Transfer/sec:    237.06MB

           

4、測試結果詳解:

Running 30s test @ http://127.0.0.1:80/
  4 threads and 100 connections
線程狀态      平均值   标準差   最大值  正負一個标準差占比
  Thread Stats   Avg      Stdev     Max   +/- Stdev
響應時間:
Latency     9.97ms   34.84ms 362.77ms   94.41%
每個線程每秒完成的請求數:
    Req/Sec    16.50k     9.78k   57.92k    67.88%
  Latency Distribution	 響應時間分布
     50%    1.01ms   在1.01ms響應時間内完成了50%的請求
     75%    3.64ms   在3.64ms響應時間内完成了75%的請求
     90%   10.41ms   在10.41ms響應時間内完成了90%的請求
     99%  198.52ms   在198.52ms響應時間内完成了99%的請求
  1898844 requests in 30.09s, 6.97GB read   30.09s内處理了1898844個請求,讀取6.97GB資料
Requests/sec:  63106.40		每秒請求數(也就是QPS)
Transfer/sec:    237.06MB	    每秒讀取237.06MB的資料

           

希望對您有所幫助,麼麼哒!

繼續閱讀