星期六, 10月 26, 2019

使用 ab ( Apache HTTP server benchmarking tool ) with openSUSE Leap 15.1 測試小記

使用 ab ( Apache HTTP server benchmarking tool ) with openSUSE Leap 15.1 測試小記

OS: openSUSE Leap 15.1
ApachBench: 2.3

最近因為工作上的需要, 有使用了一下 ab 指令進行 http 相關測試.
因為 ab 指令是內建在 Mac OS 內, 所以回家後就想要在 openSUSE Leap 15.1 上面進行測試
但是 ab 指令沒有預設安裝, 所以就要手動安裝

指令是 ab, 雖然知道是 Apache Benchmark 工具, 下意識就會想要使用
# zypper  search ab 來進行尋找 :p

但是其實 ab 指令是內建在 apache2-utils 套件內

所以使用 zypper 指令配合對的套件名稱進行安裝

# zypper  install  apache2-utils

Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following NEW package is going to be installed:
  apache2-utils

1 new package to install.
Overall download size: 123.9 KiB. Already cached: 0 B. After the operation, additional 198.2 KiB will be used.
Continue? [y/n/v/...? shows all options] (y): Y

套件大小很迷你 :)

檢查版本資訊

> ab  -V

This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

我用的是 2.3 的版本

進行簡單的連線測試

> ab  -c 10  -n 100  -s 10  http://www.gnome.org/

This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.gnome.org (be patient).....done


Server Software:        
Server Hostname:        www.gnome.org
Server Port:            80

Document Path:          /
Document Length:        0 bytes

Concurrency Level:      10
Time taken for tests:   8.019 seconds
Complete requests:      100
Failed requests:        0
Non-2xx responses:      100
Total transferred:      11900 bytes
HTML transferred:       0 bytes
Requests per second:    12.47 [#/sec] (mean)
Time per request:       801.921 [ms] (mean)
Time per request:       80.192 [ms] (mean, across all concurrent requests)
Transfer rate:          1.45 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      234 346 347.0    289 3313
Processing:   238 304 52.5    287 612
Waiting:      238 304 52.5    287 611
Total:        487 650 350.6    585 3583

Percentage of the requests served within a certain time (ms)
  50%    585
  66%    616
  75%    629
  80%    641
  90%    686
  95%   1261
  98%   1621
  99%   3583
 100%   3583 (longest request)

  • -c 是同時連線數量 Concurrency
  • -n 是 request 數量
  • -s 是 timeout
  • 以上是對 GNOME 網站每次以 10 個連線, 進行 100 requests

參考網路上找到的文章[2]  , 嘗試使用 -g 選項

> ab -c 10 -n 100 -g out.data http://www.gnome.org/
  • -g 產生 gnuplot 檔案

在該目錄下面會產生 out.data 檔案

因為沒有安裝 gnuplot, 所以使用 zypper 安裝

# zypper install gnuplot

Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 2 NEW packages are going to be installed:
  gnuplot libcerf1

2 new packages to install.
Overall download size: 1.2 MiB. Already cached: 0 B. After the operation, additional 3.9 MiB will be used.
Continue? [y/n/v/...? shows all options] (y):


使用非互動方式畫出圖形

> gnuplot  -e  " set  terminal dumb; plot 'out.data' using 9 w l "

                                                                               
  1800 +-------------------------------------------------------------------+   
       |      + +     + + +      + + + +      |   
       |                                        'out.data' using 9 ******* |   
  1600 |-+                                                               +-|   
       |                                                                  *|   
       |                                                                  *|   
  1400 |-+                                                               +*|   
       |                                                                  *|   
       |                                                                  *|   
  1200 |-+                                                               +*|   
       |                                                                 * |   
  1000 |-+                                                               *-|   
       |                                                                 * |   
       |                                                                 * |   
   800 |-+                                                               *-|   
       |                                                                 * |   
       |                                                            ***** |   
   600 |-+                         *********************************     +-|   
       |   ************************                                        |   
       |***   + +     + + +      + + + +      |   
   400 +-------------------------------------------------------------------+   
       0      10 20    30 40 50     60 70 80 90    100  
                                                                               


另外一個會用到的選項就是 -H ( custom-header )
因為有些網站, 如果你沒有帶 User-agent 或是其他的  header 就會拒絕存取
可能會用到的有
  • -H  “Host: xxx.yyy.com.tw”
  • -H “Referer: https://xxx.com.tw/main/main.html”
  • -H “User-Agent: Mozilla AppleWebKit”
  • 這邊最有感的就是, 如果有存取到 CDN 服務的話, 那速度真的差很多

先記下來

~ enjoy it

Reference

沒有留言: