最近,因為網站效能Issue,所以除了針對系統進行調整外,也想試試看系統在Web Site & CDN節點對於HTTP的負荷量,除了透過原本Visual Studio工具外,我們也可以用WRK來進行HTTP的測試。個人覺得這是一個簡單的工具而已,整體的資訊跟介面(基本上也沒介面)都是比較簡單的。要使用WRK前必須到WRK的Github下載,這個工具不能在Windows環境執行必須透過MAC執行,這有一點可惜。直接從Github下載下來,然後直接到WRK目錄,用make去編譯檔案就可以開始用,不過,在編譯前,必須先確認你的環境是否有安裝openssl和Lua兩個套件,不然會發生找不到openssl的狀況 
其Wrk目錄檔案如下:
直接下這樣的指令啟動1
wrk  -t10 -c10 -d 20 http://dice.xxxxxxxxx
就可以得到測試結果,這指令的參數分別為:
統計出來資訊,會有平均值,標準差,最大值,和正負標準差,另外,還有我們可以知道能承受多少Request,我們在測試另一個網站試試看
測試msdn.microsoft.com/cloud-app-development-msdn1
wrk  -t20 -c100 -d 20s -T5 https://msdn.microsoft.com/cloud-app-development-msdn
得到的結果1
2
3
4
5
6
7
8
9
Running 20s test  @ https://msdn.microsoft.com/cloud-app-development-msdn
  20 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.95s     1.09s    4.92s    78.36%
    Req/Sec     3.12      3.74    20.00     83.73%
  605 requests in  20.09s, 29.00MB read 
  Socket errors: connect 0, read  0, write 0, timeout 55
Requests/sec:     30.11
Transfer/sec:      1.44MB
從上面可以知道我們在20.9sec中發出了605個Request,因為設定為超過5秒就Timeout,所以,共有55個Timeout,每秒處理30.11個Request和傳輸1.44 MB。其中,Latency表示每個Request的Reponse的時間。
下面這數據,表示每個執行緒在一秒內可以完成Http的需求個數1
Req/Sec     3.12      3.74    20.00     83.73%
如果我們加上--latency,就可以看出回應時間的分佈,就可以了解更詳細一點的資訊1
2
3
4
5
6
7
8
9
10
11
12
13
14
Running 20s test  @ https://msdn.microsoft.com/cloud-app-development-msdn
  20 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.84s     1.13s    5.00s    79.78%
    Req/Sec     3.07      3.74    20.00     82.64%
  Latency Distribution
     50%    1.42s 
     75%    2.39s 
     90%    3.80s 
     99%    4.83s 
  608 requests in  20.10s, 29.02MB read 
  Socket errors: connect 0, read  0, write 0, timeout 69
Requests/sec:     30.25
Transfer/sec:      1.44MB
這只是一個簡單的測試工具,可以拿來使用看看,如果還想要更精進部分,也可以透過lua腳本去撰寫相對應的程式,可以測試的準確度根細緻化會更高,要執行lua script可以這樣下指令1
wrk -t12 -c100 -d 30s -T30s --script=AA.lua --latency http://XXXXX
個人覺得這是一個簡易型的工具,雖然整體完整性可能不是那樣高,但是基本該有的東西都包含了,所以,要做一些HTTP壓測還是拿來用看看