HTTPS壓測工具wrk

一、預先安裝需求項

爲了安裝順利,不受權限的限制,首先可以把用戶切換爲root用戶
# su + 輸入root用戶對應的密碼
1.1 安裝支持後續操作的一些組件

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc

1.2 安裝編譯套件
 

yum install gcc perl-ExtUtils-MakeMaker


 

二、安裝or升級版本管理工具git

2.1 查看git版本
 

git --version


若libiconv字符集轉換庫沒安裝而出現錯誤:error: /utf8.c:463: undefined reference to 'libiconv'
解決方案:依次執行如下命令(無以上error則略過)

# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

# tar zxvf libiconv-1.14.tar.gz

# cd libiconv-1.14

# ./configure --prefix=/usr/local/libiconv

# make && make install

2.2 卸載舊版本git
在CentOS6.3系統環境下,如果以上查詢的版本比較早(如:1.7.1版本),對後續的安裝wrk會受到阻礙,故需升級git到新版本(如:2.2.1版本)
卸載舊版本的目錄爲:
 

yum remove git

2.3 安裝新版本git
1)下載git 2.2.1進行編譯安裝;2)將git添加到環境變量

# wget https://github.com/git/git/archive/v2.2.1.tar.gz

# tar -zxvf v2.2.1

# cd git-2.2.1

# make configure

# ./configure --prefix=/usr/local/git --with-iconv=/usr/local/libiconv

# make all doc

# make install install-doc install-html

# echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc

# source /etc/bashrc


再次查看安裝新版本git後的效果:

git --version


 

三、正式安裝wrk

切換到src目錄,再次檢驗是否安裝git


 
  1. # cd /usr/local/src

  2. # yum install git -y


3.1 克隆wrk安裝文件到本地 

# git clone https://github.com/wg/wrk.git


3.2 編譯wrk文件

 cd wrk

# make


若出現錯誤:xmlto: command not found,可以嘗試重新安裝xmlto:# yum -y install xmlto
3.3 創建軟鏈接到指定目錄

# ln -s /usr/local/src/wrk/wrk /usr/local/bin


3.4 檢驗wrk是否安裝成功
 

# wrk

 
[root@instance-lnjc135w wrk]# wrk

Usage: wrk <options> <url>

Options:

-c, --connections <N> Connections to keep open

-d, --duration <T> Duration of test

-t, --threads <N> Number of threads to use


-s, --script <S> Load Lua script file

-H, --header <H> Add header to request

--latency Print latency statistics

--timeout <T> Socket/request timeout

-v, --version Print version details


Numeric arguments may include a SI unit (1k, 1M, 1G)

Time arguments may include a time unit (2s, 2m, 2h)

四、wrk性能測試

4.1 配置待測網站的IP指向到內網
根據測試環境的要求,進行環境配置,比如有的網站不允許在外網正式環境進行壓測,就需要配置一個指向內網的環境進行測試
打開hosts編輯器
# vim /etc/hosts
配置當前環境的hosts,格式爲:

# IP1 url1

# IP2 url2

...

# IPx urlx

ESC鍵從編輯模式切換到正常模式,然後輸入:wq保存並退出

4.2 測試http協議網站的性能

[root@localhost /]# wrk -t2 -c10 -d15 --latency http://www.baidu.com

Running 15s test @ http://www.baidu.com

2 threads and 10 connections

Thread Stats Avg Stdev Max +/- Stdev

Latency 35.64ms 1.31ms 48.59ms 79.38%

Req/Sec 138.40 13.52 151.00 89.00%

Latency Distribution

50% 35.50ms

75% 36.13ms

90% 37.09ms

99% 40.33ms

4151 requests in 15.05s, 60.83MB read

Socket errors: connect 0, read 29, write 0, timeout 0

Requests/sec: 275.72

Transfer/sec: 4.04MB

4.3 wrk參數含義
1)語法中的參數

-t:需要模擬的線程數

-c:需要模擬的連接數

-d:測試的持續時間

--timeout:超時的時間

--latency:顯示延遲統計

2)結果顯示的指標

Latency:響應時間

Req/Sec:每個線程每秒鐘的完成的請求數

Avg:平均

Max:最大

Stdev:標準差

 

命令的使用

建立20個TCP連接,使用兩個線程,用時2分鐘,對http://192.168.100.1:80/manage進行壓測。

   

執行結果

./wrk -c 20 -t 2 -d 10s http://192.168.100.1:80/manage
Running 10s test @ http://192.168.100.1:80/manage
  2 threads and 20 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   830.07ms   79.77ms   1.05s    68.97%
    Req/Sec    15.77     11.41    50.00     69.09%
  232 requests in 10.04s, 225.66KB read    (10.04s處理了232個請求數,讀取了60.30KB的數據)
Requests/sec:     23.11    一秒完成請求數23.11次
Transfer/sec:     22.48KB      每秒讀取22.48KB

也可以發送POST請求進行壓測

wrk -c 20 -t 2 -d 10 -H "host: dream.com" --script=post.txt http://10.XX.XX.XX:80/manage --latency --timeout 1s

   

 

 

post.txt

wrk.method = "POST"

   

wrk.body = "x=1&y=2"

   

wrk.headers["Content-Type"] = "application/x-www-form-urlencoded"

   

解析同上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章