apache bench壓力測試


root@platform-adsproxyapi-deployment-5dd7fbfbc7-x7cgl:/app# apt-get install apache2-utils
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libapr1 libaprutil1
The following NEW packages will be installed:
  apache2-utils libapr1 libaprutil1
0 upgraded, 3 newly installed, 0 to remove and 22 not upgraded.
Need to get 400 kB of archives.
After this operation, 905 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://mirrors.163.com/debian stretch/main amd64 libapr1 amd64 1.5.2-5 [96.6 kB]
Get:2 http://mirrors.163.com/debian stretch/main amd64 libaprutil1 amd64 1.5.4-3 [85.8 kB]
Get:3 http://mirrors.163.com/debian-security stretch/updates/main amd64 apache2-utils amd64 2.4.25-3+deb9u9 [218 kB]
Fetched 400 kB in 11s (34.7 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package libapr1:amd64.
(Reading database ... 22004 files and directories currently installed.)
Preparing to unpack .../libapr1_1.5.2-5_amd64.deb ...
Unpacking libapr1:amd64 (1.5.2-5) ...
Selecting previously unselected package libaprutil1:amd64.
Preparing to unpack .../libaprutil1_1.5.4-3_amd64.deb ...
Unpacking libaprutil1:amd64 (1.5.4-3) ...
Selecting previously unselected package apache2-utils.
Preparing to unpack .../apache2-utils_2.4.25-3+deb9u9_amd64.deb ...
Unpacking apache2-utils (2.4.25-3+deb9u9) ...
Setting up libapr1:amd64 (1.5.2-5) ...
Processing triggers for libc-bin (2.24-11+deb9u4) ...
Setting up libaprutil1:amd64 (1.5.4-3) ...
Setting up apache2-utils (2.4.25-3+deb9u9) ...
Processing triggers for libc-bin (2.24-11+deb9u4) ...
root@platform-adsproxyapi-deployment-5dd7fbfbc7-x7cgl:/app# ab -n 1000
ab: wrong number of arguments
Usage: ab [options] [http[s]://]hostname[:port]/path
Options are:
    -n requests     Number of requests to perform
    -c concurrency  Number of multiple requests to make at a time
    -t timelimit    Seconds to max. to spend on benchmarking
                    This implies -n 50000
    -s timeout      Seconds to max. wait for each response
                    Default is 30 seconds
    -b windowsize   Size of TCP send/receive buffer, in bytes
    -B address      Address to bind to when making outgoing connections
    -p postfile     File containing data to POST. Remember also to set -T
    -u putfile      File containing data to PUT. Remember also to set -T
    -T content-type Content-type header to use for POST/PUT data, eg.
                    'application/x-www-form-urlencoded'
                    Default is 'text/plain'
    -v verbosity    How much troubleshooting info to print
    -w              Print out results in HTML tables
    -i              Use HEAD instead of GET
    -x attributes   String to insert as table attributes
    -y attributes   String to insert as tr attributes
    -z attributes   String to insert as td or th attributes
    -C attribute    Add cookie, eg. 'Apache=1234'. (repeatable)
    -H attribute    Add Arbitrary header line, eg. 'Accept-Encoding: gzip'
                    Inserted after all normal header lines. (repeatable)
    -A attribute    Add Basic WWW Authentication, the attributes
                    are a colon separated username and password.
    -P attribute    Add Basic Proxy Authentication, the attributes
                    are a colon separated username and password.
    -X proxy:port   Proxyserver and port number to use
    -V              Print version number and exit
    -k              Use HTTP KeepAlive feature
    -d              Do not show percentiles served table.
    -S              Do not show confidence estimators and warnings.
    -q              Do not show progress when doing more than 150 requests
    -l              Accept variable document length (use this for dynamic pages)
    -g filename     Output collected data to gnuplot format file.
    -e filename     Output CSV file with percentages served
    -r              Don't exit on socket receive errors.
    -m method       Method name
    -h              Display usage information (this message)
    -I              Disable TLS Server Name Indication (SNI) extension
    -Z ciphersuite  Specify SSL/TLS cipher suite (See openssl ciphers)
    -f protocol     Specify SSL/TLS protocol
                    (TLS1, TLS1.1, TLS1.2 or ALL)
root@platform-adsproxyapi-deployment-5dd7fbfbc7-x7cgl:/app# ab -n 1000 -c 2 http://platform-adsproxyapi/api/Ops/TestProxy
This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking platform-adsproxyapi (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:        Kestrel
Server Hostname:        platform-adsproxyapi
Server Port:            80

Document Path:          /api/Ops/TestProxy
Document Length:        95 bytes

Concurrency Level:      2
Time taken for tests:   226.142 seconds
Complete requests:      1000
Failed requests:        832
   (Connect: 0, Receive: 0, Length: 832, Exceptions: 0)
Total transferred:      269848 bytes
HTML transferred:       85848 bytes
Requests per second:    4.42 [#/sec] (mean)
Time per request:       452.283 [ms] (mean)
Time per request:       226.142 [ms] (mean, across all concurrent requests)
Transfer rate:          1.17 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.0      0      25
Processing:    65  452 871.9     86    3337
Waiting:       65  451 872.0     86    3337
Total:         65  452 871.9     86    3337

Percentage of the requests served within a certain time (ms)
  50%     86
  66%     97
  75%    109
  80%    131
  90%   1449
  95%   3032
  98%   3107
  99%   3191
 100%   3337 (longest request)
root@platform-adsproxyapi-deployment-5dd7fbfbc7-x7cgl:/app# 

  

linux 下ab壓力測試

 

1.ab的簡介

   ab是apachebench命令的縮寫。

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

2.ab的原理

   ab的原理:ab命令會創建多個並發訪問線程,模擬多個訪問者同時對某一URL地址進行訪問。它的測試目標是基於URL的,因此,它既可以用來測試apache的負載壓力,也可以測試nginx、lighthttp、tomcat、IIS等其它Web服務器的壓力。

   ab命令對發出負載的計算機要求很低,它既不會占用很高CPU,也不會占用很多內存。但卻會給目標服務器造成巨大的負載,其原理類似CC攻擊。自己測試使用也需要注意,否則一次上太多的負載。可能造成目標服務器資源耗完,嚴重時甚至導致死機。

3.ab的安裝

yum -y install httpd-tools

apt-get install apache2-utils

6.ab的應用

   ab的命令參數比較多,我們經常使用的是-c和-n參數。

   ab -c 10 -n 100 http://www.myvick.cn/index.php :同時處理100個請求並運行10次index.php

  -c10表示並發用戶數為10

  -n100表示請求總數為100

復制代碼
[root@vic html]# ab -c 10 -n 100 http://www.myvick.cn/index.php
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.myvick.cn (be patient).....done


Server Software:        nginx/1.13.6   #測試服務器的名字
Server Hostname:        www.myvick.cn  #請求的URL主機名
Server Port:            80             #web服務器監聽的端口

Document Path:          /index.php    #請求的URL中的根絕對路徑,通過該文件的后綴名,我們一般可以了解該請求的類型
Document Length:        799 bytes       #HTTP響應數據的正文長度

Concurrency Level:      10        # 並發用戶數,這是我們設置的參數之一
Time taken for tests:   0.668 seconds   #所有這些請求被處理完成所花費的總時間 單位秒
Complete requests:      100         # 總請求數量,這是我們設置的參數之一
Failed requests:        0          # 表示失敗的請求數量,這里的失敗是指請求在連接服務器、發送數據等環節發生異常,以及無響應后超時的情況
Write errors:           0
Total transferred:      96200 bytes    #所有請求的響應數據長度總和。包括每個HTTP響應數據的頭信息和正文數據的長度
HTML transferred:       79900 bytes    # 所有請求的響應數據中正文數據的總和,也就是減去了Total transferred中HTTP響應數據中的頭信息的長度
Requests per second:    149.71 [#/sec] (mean) #吞吐率,計算公式:Complete requests/Time taken for tests  總請求數/處理完成這些請求數所花費的時間
Time per request:       66.797 [ms] (mean)   # 用戶平均請求等待時間,計算公式:Time token for tests/(Complete requests/Concurrency Level)。處理完成所有請求數所花費的時間/(總請求數/並發用戶數)
Time per request:       6.680 [ms] (mean, across all concurrent requests) #服務器平均請求等待時間,計算公式:Time taken for tests/Complete requests,正好是吞吐率的倒數。也可以這么統計:Time per request/Concurrency Level
Transfer rate:          140.64 [Kbytes/sec] received  #表示這些請求在單位時間內從服務器獲取的數據長度,計算公式:Total trnasferred/ Time taken for tests,這個統計很好的說明服務器的處理能力達到極限時,其出口寬帶的需求量。

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        1    2   0.7      2       5
Processing:     2   26  81.3      3     615
Waiting:        1   26  81.3      3     615
Total:          3   28  81.3      6     618

Percentage of the requests served within a certain time (ms)
  50%      6
  66%      6
  75%      7
  80%      7
  90%     10
  95%    209
  98%    209
  99%    618
 100%    618 (longest request)

#Percentage of requests served within a certain time(ms)這部分數據用於描述每個請求處理時間的分布情況,比如以上測試,80%的請求處理時間都不超過7ms,這個處理時間是指前面的Time per request,即對於單個用戶而言,平均每個請求的處理時間
復制代碼

 7 nginx和apache對比

  nginx性能確實比apache性能高。nginx的吞吐量大於apache的,吞吐量越大越好

 

參考資料:http://www.jb51.net/article/59469.htm

     http://blog.csdn.net/caotianyin/article/details/49253055

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM