Linux學習13-CentOS安裝ab作壓力測試

前言nginx

網站性能壓力測試是服務器網站性能調優過程當中必不可缺乏的一,測試環境準備好了後,如何對網站作壓力測試?
壓力測試的工具不少,如:ab、http_load、webbench、siege、jmeter、lr、locust,本篇介紹一個輕量級的壓力測試工具ab,上手很是容易。web

ab(apachebench)簡介

ApacheBench 是 Apache 服務器自帶的一個web壓力測試工具,簡稱ab。
ab又是一個命令行工具,對發起負載的本機要求很低,根據ab命令能夠建立不少的併發訪問線程,模擬多個訪問者同時對某一URL地址進行訪問,所以能夠用來測試目標服務器的負載壓力。
總的來講ab工具小巧簡單,上手學習較快,能夠提供須要的基本性能指標,可是沒有圖形化結果,不能監控。apache

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

ab命令對發出負載的計算機要求很低,它既不會佔用很高CPU,也不會佔用不少內存。
但卻會給目標服務器形成巨大的負載,其原理相似CC攻擊。本身測試使用也須要注意,不然一次上太多的負載。可能形成目標服務器資源耗完,嚴重時甚至致使死機。centos

ab性能指標

在進行性能測試過程當中有幾個指標比較重要:tomcat

1.吞吐率(Requests per second)服務器

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

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

  • 吞吐率和併發用戶數相關
  • 不一樣的併發用戶數下,吞吐率通常是不一樣的
    計算公式:總請求數/處理完成這些請求數所花費的時間,即Request per second=Complete requests/Time taken for tests
    必需要說明的是,這個數值表示當前機器的總體性能,值越大越好。

2.併發鏈接數(The number of concurrent connections)app

併發鏈接數指的是某個時刻服務器所接受的請求數目,簡單的講,就是一個會話。

3.併發用戶數(Concurrency Level)

要注意區分這個概念和併發鏈接數之間的區別,一個用戶可能同時會產生多個會話,也即鏈接數。在HTTP/1.1下,IE7支持兩個併發鏈接,IE8支持6個併發鏈接,FireFox3支持4個併發鏈接,因此相應的,咱們的併發用戶數就得除以這個基數。

4.用戶平均請求等待時間(Time per request)

計算公式:處理完成全部請求數所花費的時間/(總請求數/併發用戶數),即:

Time per request=Time taken for tests/(Complete requests/Concurrency Level)

5.服務器平均請求等待時間(Time per request:across all concurrent requests)

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

Time taken for/testsComplete requests

能夠看到,它是吞吐率的倒數。同時,它也等於用戶平均請求等待時間/併發用戶數,即

Time per request/Concurrency Level

ab安裝

centos下安裝ab很是簡單,直接用yum就能夠安裝了

yum install -y httpd-tools

[root@yoyo ~]# yum install -y httpd-tools

Dependencies Resolved

=================================================================================================================================
 Package                        Arch                      Version                                  Repository               Size
=================================================================================================================================
Installing:
 httpd-tools                    x86_64                    2.4.6-88.el7.centos                      base                     90 k
Installing for dependencies:
 apr                            x86_64                    1.4.8-3.el7_4.1                          base                    103 k
 apr-util                       x86_64                    1.5.2-6.el7                              base                     92 k

Transaction Summary
=================================================================================================================================
Install  1 Package (+2 Dependent packages)

Total download size: 286 k
Installed size: 584 k
Downloading packages:
(1/3): apr-util-1.5.2-6.el7.x86_64.rpm                                                                    |  92 kB  00:00:00     
(2/3): apr-1.4.8-3.el7_4.1.x86_64.rpm                                                                     | 103 kB  00:00:00     
(3/3): httpd-tools-2.4.6-88.el7.centos.x86_64.rpm                                                         |  90 kB  00:00:00     
---------------------------------------------------------------------------------------------------------------------------------
Total                                                                                            1.0 MB/s | 286 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : apr-1.4.8-3.el7_4.1.x86_64                                                                                    1/3 
  Installing : apr-util-1.5.2-6.el7.x86_64                                                                                   2/3 
  Installing : httpd-tools-2.4.6-88.el7.centos.x86_64                                                                        3/3 
  Verifying  : httpd-tools-2.4.6-88.el7.centos.x86_64                                                                        1/3 
  Verifying  : apr-util-1.5.2-6.el7.x86_64                                                                                   2/3 
  Verifying  : apr-1.4.8-3.el7_4.1.x86_64                                                                                    3/3 

Installed:
  httpd-tools.x86_64 0:2.4.6-88.el7.centos                                                                                       

Dependency Installed:
  apr.x86_64 0:1.4.8-3.el7_4.1                                   apr-util.x86_64 0:1.5.2-6.el7                                  

Complete!

安裝完成後,使用ab -V查看版本號Version 2.3

[root@yoyo sbin]# ab  -V
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

查看幫助信息,使用ab -help,其中最主要的是-c 併發數和-n 總的鏈接數

[root@yoyo sbin]# ab -help
Usage: ab [options] [http[s]://]hostname[:port]/path
Options are:
    -n requests     要執行請求總數,默認會執行一個請求
    -c concurrency  一次執行多個請求的數量,也就是併發數
    -t timelimit     用於基準測試的最大秒數,使用它在固定的總時間內對服務器進行基準測試。默認狀況下,沒有時間限制。
    -s timeout      超時以前等待的最大秒數。 默認值是30秒。
    -b windowsize  TCP發送/接收緩衝區的大小,以字節爲單位。
    -B address     進行傳出鏈接時要綁定的地址。
    -p postfile     包含數據到POST的文件。 還請記住設置-T。
    -u putfile     包含PUT數據的文件。 還請記住設置-T 。
    -T content-type  Content-type用於POST / PUT數據的內容類型內容類型標題,例如:'application/x-www-form-urlencoded' 默認是' 'text/plain'
    -v verbosity    verbosity 要打印多少個疑難解答信息,設置詳細級別 - 4和以上打印標題信息,3和以上打印響應代碼(404,200等),2和以上打印警告和信息。
    -w             以HTML表的格式輸出結果。默認時,它是白色背景的兩列寬度的一張表。
    -i              執行HEAD請求,而不是GET。
    -x attributes   用做<table>的屬性的字符串。 屬性被插入<table here>。
    -y attributes  用做<tr>的屬性的字符串。
    -z attributes   用做<td>的屬性的字符串。
    -C attribute    將cookie添加到請求。 參數一般採用名稱=值對的形式。 這個字段是可重複的。
    -H attribute   例如 ‘Accept-Encoding: gzip’ 插入全部普通標題行以後
       
    -A attribute   添加基本的WWW認證,該屬性是一個冒號分隔的用戶名和密碼,auth-username:password

    -P attribute     添加基本代理驗證,屬性是一個冒號分隔的用戶名和密碼,proxy-auth-username:password

    -X proxy:port   使用代理服務器和端口號。
    -V           打印版本號並退出。
    -k             使用HTTP KeepAlive功能。
    -d            不要顯示百分點服務表。
    -S           不要顯示信心估計和警告。
    -q            作超過150個請求時不要顯示進度。
    -g filename    將收集的數據輸出到gnuplot格式文件。
    -e filename    輸出提供百分比的CSV文件。
    -r             不要退出套接字接收錯誤。
    -h            顯示使用狀況信息(此消息)。
    -Z ciphersuite  密碼套件指定SSL / TLS密碼套件(請參閱openssl密碼)
    -f protocol    指定SSL / TLS協議 (SSL3, TLS1, TLS1.1, TLS1.2 or ALL)

ab壓測示例

請求併發數爲10, 總共發100個請求,測試地址:http://47.104.x.x:81/,沒測試環境的能夠試試壓測百度https://www.baidu.com/

ab -c 10 -n 100 http://47.104.x.x:81/

[root@yoyo sbin]# ab -c 10 -n 100 http://47.104.x.x:81/
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
# -------------以上的ab相關版本信息-------------------------#

Benchmarking 47.104.x.x (be patient).....done

Server Software:        nginx/1.12.0                      # 服務器軟件版本
Server Hostname:        47.104.x.x                       # 請求的URL
Server Port:            81                                        # 請求的端口號

Document Path:          /                                       #  請求的服務器的路徑
Document Length:        11270 bytes                   # 單個請求頁面長度   單位是字節

Concurrency Level:      10                                   # 併發數
Time taken for tests:   19.130 seconds                # 總過耗時124s     
Complete requests:      100                                  # 總請求次數
Failed requests:            0                                       # 失敗的請求
Write errors:                 0                                            
Total transferred:      1140400 bytes                      # 總共傳輸的字節數  http頭信息
HTML transferred:       1127000 bytes                     # 實際頁面傳遞的字節數
Requests per second:    5.23 [#/sec] (mean)           # 每秒多少個請求
Time per request:       1913.021 [ms] (mean)           # 平均每一個用戶等待多長時間
Time per request:       191.302 [ms] (mean, across all concurrent requests)  # 服務器平均用多長時間處理
Transfer rate:          58.22 [Kbytes/sec] received        #  每秒獲取多少數據

Connection Times (ms)
                      min  mean[+/-sd]     median     max
Connect:        0      40 197.2            0           1002
Processing:    2     1824 1687.0     1426        10556
Waiting:          1     813 1199.9       438          8754
Total:              2     1864 1679.4     1429       10556


Percentage of the requests served within a certain time (ms)
  50%   1429                 # 50%的用戶的請求 1429ms內返回
  66%   2035
  75%   2493
  80%   2845
  90%   3449
  95%   5174
  98%   7855
  99%  10556
 100%  10556 (longest request)

注意,通常測試環境服務器,和壓力測試ab的服務器不要用同一個,要否則對整個結果會有影響

交流QQ羣:779429633

相關文章
相關標籤/搜索