1. 程式人生 > >使用ab 進行併發壓力測試

使用ab 進行併發壓力測試

ab全稱為:apache bench。

是apache自帶的壓力測試工具。ab非常實用,它不僅可以對apache伺服器進行網站訪問壓力測試,也可以對或其它型別的伺服器進行壓力測試。比如nginx、tomcat、IIS等。

 

安裝ab命令:

ubuntu:

sudo apt-get install apache2-utils

centos:

yum install apr-util

# 安裝依賴 yum-utils中的yumdownload 工具
# 如果沒有找到 yumdownload 命令可以
yum install yum-utils

 

 

使用:

簡單使用說明
1. 最基本的關心兩個選項 -c -n
例: ab -n 1000 -c 100 http://www.baidu.com/

-n 1000 即: 共傳送1000個請求
-c 100 即:每次併發100個

 

測試結果:

命令:ab -n 1000 -c 1000 http://www.test.net/switch/get

 

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

Benchmarking www.test.net(be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx/1.10.2
Server Hostname:        www.test.net
Server Port:            80

Document Path:          /switch/get
Document Length:        85 bytes

Concurrency Level:      1000
Time taken for tests:   2.296 seconds
Complete requests:      1000
Failed requests:        170
   (Connect: 0, Receive: 0, Length: 170, Exceptions: 0)
Non-2xx responses:      170
Total transferred:      496990 bytes
HTML transferred:       103360 bytes
Requests per second:    435.62 [#/sec] (mean)
Time per request:       2295.555 [ms] (mean)
Time per request:       2.296 [ms] (mean, across all concurrent requests)
Transfer rate:          211.43 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       15  132  47.7    145     201
Processing:    89  428 225.7    382    2121
Waiting:       85  358 223.0    293    2121
Total:        198  559 233.0    512    2286

Percentage of the requests served within a certain time (ms)
  50%    512
  66%    603
  75%    697
  80%    751
  90%    850
  95%    910
  98%    935
  99%   1243
 100%   2286 (longest request)

 

 

結果分析:

伺服器資訊:

  採用nginx伺服器,域名是www.test.net,埠號80埠。

Server Software:        nginx/1.10.2
Server Hostname:        www.test.net
Server Port:            80

文件資訊:

  文件路徑/switch/get,文件長度85位元組(http響應的正文長度)

Document Path:          /switch/get
Document Length:        85 bytes

重要指標:

  Concurrency Level: 1000  // 1000個併發請求

  Time taken for tests: 2.296 seconds  // 整個測試持續時間

  Complete requests: 1000  // 完成了1000個請求

  Failed requests: 170 (Connect: 0, Receive: 0, Length: 170, Exceptions: 0)  // 失敗的請求數170

  Non-2xx responses: 170  // 170個不是2開頭的響應碼,比如快取的304

  Total transferred: 496990 bytes  // 整個場景中的網路傳輸量

  HTML transferred: 103360 bytes  // 整個場景中的HTML內容傳輸量

  Requests per second: 435.62 [#/sec] (mean)

  // 吞吐率(大家最關心的指標之一)

  伺服器併發處理能力的量化描述,單位是reqs/s,指的是在某個併發使用者數下單位時間內處理的請求數。某個併發使用者數下單位時間內能處理的最大請求數,稱之為最大吞吐率。

  記住:吞吐率是基於併發使用者數的。這句話代表了兩個含義:

  a、吞吐率和併發使用者數相關

  b、不同的併發使用者數下,吞吐率一般是不同的

  計算公式:總請求數/處理完成這些請求數所花費的時間,即

  Request per second=Complete requests/Time taken for tests

  必須要說明的是,這個數值表示當前機器的整體效能,值越大越好。

  Time per request: 2295.555 [ms] (mean)

   // 使用者平均請求等待時間,大家最關心的指標之二

  計算公式:處理完成所有請求數所花費的時間/(總請求數/併發使用者數)

  Time per request: 2.296 [ms] (mean, across all concurrent requests)

  // 伺服器平均請求處理時間,大家最關心的指標之三

  計算公式:處理完成所有請求數所花費的時間/總請求數

  Transfer rate: 211.43 [Kbytes/sec] received  // 平均每秒網路上的流量,可以幫助排除是否存在網路流量過大導致響應時間延長的問題

 

Concurrency Level:      1000
Time taken for tests:   2.296 seconds
Complete requests:      1000
Failed requests:        170
   (Connect: 0, Receive: 0, Length: 170, Exceptions: 0)
Non-2xx responses:      170
Total transferred:      496990 bytes
HTML transferred:       103360 bytes
Requests per second:    435.62 [#/sec] (mean)
Time per request:       2295.555 [ms] (mean)
Time per request:       2.296 [ms] (mean, across all concurrent requests)
Transfer rate:          211.43 [Kbytes/sec] received

 

 網路上消耗的時間的分解:

 

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       15  132  47.7    145     201
Processing:    89  428 225.7    382    2121
Waiting:       85  358 223.0    293    2121
Total:        198  559 233.0    512    2286

 

每個請求處理時間的分佈情況,50%的處理時間在512ms內,66%的處理時間在603ms內...,重要的是看90%的處理時間:

 

Percentage of the requests served within a certain time (ms)
  50%    512
  66%    603
  75%    697
  80%    751
  90%    850
  95%    910
  98%    935
  99%   1243
 100%   2286 (longest request)

複製程式碼