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

使用ab進行壓力測試詳解

當你使用PHP(或其他程式語言)完成一個web程式的開發,並且web程式在Apache伺服器上正常執行的時候,你有沒有考慮過對你的Apache伺服器及部署在其上的web程式進行一些壓力測試呢?畢竟,真金不怕火煉,只要配置優化合理、程式程式碼執行效能良好、硬體撐得住,通過壓力測試我們就能看到一個喜人的成績。話又說回來,即使測試結果差強人意或者糟糕透了,我們也可以好好反思並找到「問題出在哪裡」。說了這麼多廢話,其實就是想告訴你一句:對伺服器以及網站程式進行壓力測試還是很有必要的。

要對Apache及其上的web程式進行壓力測試其實非常簡單,我們也不用再額外下載安裝什麼測試工具,因為Apache HTTP Server已經給我們準備了一個壓力測試工具——ab

ab,即Apache Benchmark,只要我們安裝了Apache,就能夠在Apache的安裝目錄中找到它。它的居住地址是Apache安裝目錄/bin/ab.exe。現在,我們就來看看如何使用ab.exe來進行壓力測試。

在使用之前我們先來學習一下ab的用法。首先,我們輸入cmd開啟DOS視窗,然後將更改當前工作目錄為:Apache安裝目錄/bin/。然後鍵入幫助命令ab -help(或者ab /?ab -h),我們就可以看到如下的用法介紹介面。

ab的用法介紹ab的用法介紹

通過上面的用法介紹可以得知,ab的使用方法就是輸入如下DOS命令:

ab [可選的引數選項] 需要進行壓力測試的url

此外,我們再根據上面的用法介紹介面來詳細瞭解每個引數選項的作用。

-n
即requests,用於指定壓力測試總共的執行次數。
-c
即concurrency,用於指定壓力測試的併發數。
-t
即timelimit,等待響應的最大時間(單位:秒)。
-b
即windowsize,TCP傳送/接收的緩衝大小(單位:位元組)。
-p
即postfile,傳送POST請求時需要上傳的檔案,此外還必須設定-T引數。
-u
即putfile,傳送PUT請求時需要上傳的檔案,此外還必須設定-T引數。
-T
即content-type,用於設定Content-Type請求頭資訊,例如:application/x-www-form-urlencoded,預設值為text/plain
-v
即verbosity,指定列印幫助資訊的冗餘級別。
-w
以HTML表格形式列印結果。
-i
使用HEAD請求代替GET請求。
-x
插入字串作為table標籤的屬性。
-y
插入字串作為tr標籤的屬性。
-z
插入字串作為td標籤的屬性。
-C
新增cookie資訊,例如:"Apache=1234"(可以重複該引數選項以新增多個)。
-H
新增任意的請求頭,例如:"Accept-Encoding: gzip",請求頭將會新增在現有的多個請求頭之後(可以重複該引數選項以新增多個)。
-A
新增一個基本的網路認證資訊,使用者名稱和密碼之間用英文冒號隔開。
-P
新增一個基本的代理認證資訊,使用者名稱和密碼之間用英文冒號隔開。
-X
指定使用的代理伺服器和埠號,例如:"126.10.10.3:88"。
-V
列印版本號並退出。
-k
使用HTTP的KeepAlive特性。
-k
使用HTTP的KeepAlive特性。
-d
不顯示百分比。
-S
不顯示預估和警告資訊。
-g
輸出結果資訊到gnuplot格式的檔案中。
-e
輸出結果資訊到CSV格式的檔案中。
-r
指定接收到錯誤資訊時不退出程式。
-h
顯示用法資訊,其實就是ab -help

雖然ab可以配置的引數選項比較多,但是,一般情況下我們只需要使用形如ab -n 數字 -c 數字 url路徑的命令即可。譬如,我們對位於本地Apache伺服器上、URL為localhost/index.php的頁面進行壓力測試。測試總次數為1000,併發數為100(相當於100個使用者同時訪問,他們總共訪問1000次)。我們輸入DOS命令ab -n 1000 -c 100 localhost/index.php,列印結果如下:

F:\Apache2.2\bin>ab -n 1000 -c 100 localhost/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 localhost (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:        Apache/2.2.25 (伺服器軟體名稱及版本資訊)
Server Hostname:        localhost (伺服器主機名)
Server Port:            80 (伺服器埠)
Document Path:          /index.php (供測試的URL路徑)
Document Length:        10 bytes (供測試的URL返回的文件大小)
Concurrency Level:      100 (併發數)
Time taken for tests:   0.247 seconds (壓力測試消耗的總時間)
Complete requests:      1000 (壓力測試的總次數)
Failed requests:        0 (失敗的請求數)
Write errors:           0 (網路連線寫入錯誤數)
Total transferred:      198000 bytes (傳輸的總資料量)
HTML transferred:       10000 bytes (HTML文件的總資料量)
Requests per second:    4048.34 [#/sec] (mean) (平均每秒的請求數)
Time per request:       24.701 [ms] (mean) (所有併發使用者(這裡是100)都請求一次的平均時間)
Time per request:       0.247 [ms] (mean, across all concurrent requests) (單個使用者請求一次的平均時間)
Transfer rate:          782.78 [Kbytes/sec] received (傳輸速率,單位:KB/s)
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.3      0       1
Processing:     6   23   4.2     24      30
Waiting:        5   20   5.3     21      29
Total:          6   23   4.2     24      30

Percentage of the requests served within a certain time (ms)
  50%     24
  66%     25
  75%     26
  80%     26
  90%     27
  95%     27
  98%     28
  99%     29
 100%     30 (longest request)

在上面的測試中,我們設定的壓力測試總次數以及併發數並沒有讓伺服器感覺到什麼「壓力」,現在我們再來看一個「壓力山大」的執行命令:ab -n 100000 -c 1000 localhost/index.php,這個時候apache就直接罷工——拒絕訪問了:

F:\Apache2.2\bin>ab -n 100000 -c 1000 localhost/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 localhost (be patient)  
Test aborted after 10 failures
apr_socket_connect(): 由於目標計算機積極拒絕,無法連線。   (730061)

注意:在上面的壓力測試中,Apache使用的是預設配置,並沒有經過任何優化措施處理。實際上,Apache在經過配置優化後,只要伺服器硬體夠用,Apache伺服器是能夠撐起1000的併發量的。

相關推薦

使用ab進行壓力測試

當你使用PHP(或其他程式語言)完成一個web程式的開發,並且web程式在Apache伺服器上正常執行的時候,你有沒有考慮過對你的Apache伺服器及部署在其上的web程式進行一些壓力測試呢?畢竟,真金不怕火煉,只要配置優化合理、程式程式碼執行效能良好、硬體撐得住,通過壓力測試我們就能看到一個喜人的成績。話又

使用apache ab進行壓力測試

測試 col 技術分享 proc nag size mark pre vpd ab -n10000 -c1000 http://127.0.0.1:80/ 使用apache ab進行壓力測試

Jmeter+badboy的壓力測試()

1.下載badboy和Jmeter Jmeter需要Java的環境配置,這裡就不多寫了,可以去百度,基本說的很全面的. 2.badboy的錄製方式和Jmeter運用    2.1錄製     1.寫入具體的url並進行訪問           2.訪問

【Apache】從Apache官網下載windows版apache伺服器,並用AB進行壓力測試

1、下載穩定版2.2.31     http://httpd.apache.org/ 2.2.*和2.4.*區別?     httpd-2.2.x(prefork)     httpd-2.4.x(event) 編譯時可以使用--with-mpm=prefork手動指定

使用Apache的ab進行壓力測試

概述ab是apache自帶的壓力測試工具,當安裝完apache的時候,就可以在bin下面找到ab然後進行apache 負載壓力測試。後臺測試開發中,常用的壓力測試服務,php一般選擇xampp,下載地址:點選開啟連結,java後臺,如果你選用apache,apache htt

CodeBenchmark之壓力測試

CodeBenchmark是一款高效能視覺化的併發測試元件,通過元件可以對任意邏輯程式碼或服務進行併發測試;元件最終通過視覺化的方式來顯示測試結果,在測試結果中可以看到具體的併發情況和處理延時的分佈。元件不僅可以對單個邏輯或服務進行併發測試,還可以同時對多個邏輯程式碼用例進行不同併發分組壓測,最終顯示它們之間

ab(Apache Bench)命令以及壓力測試模擬

簡介 ApacheBench 是 Apache伺服器自帶的一個web壓力測試工具,簡稱ab。ab又是一個命令列工具,對發起負載的本機要求很低,根據ab命令可以建立很多的併發訪問執行緒,模擬多個訪問者同時對某一URL地址進行訪問,因此可以用來測試目標伺服器的負載壓力。總的來說ab工具小巧簡

使用ab對web服務進行壓力測試

服務器 時間限制 pac 0.10 字節 -s 重復 最小 傳輸速率 ab  需要先安裝httpd -A auth-username:密碼 向服務器提供BASIC認證憑證。用戶名和密碼由一個單獨分隔 -c並發 一次執行的多個請求數。默認是一次一個請求。 -C cookie-

利用ab壓力工具對服務器進行壓力測試

因此 win request 過大 .exe http cond don bin 假如我們需要對http://letv.com進行壓力測試,指定請求總數為100,並發用戶數為10,我們可以以下面的方式進行測試 $ ab -n 100 -c 10 http://letv

使用ab對網站進行壓力測試

進行 壓力 測試 oca tools ray local too install 1、安裝yum install httpd-tools 2、ab -kc 1000 -n 1000 http://localhost/ab.html 這個指令會使用1000個並發,進行連接

使用ab對Tomcat8.5進行壓力測試

背景 一直不是很清楚tomcat能力大約是個什麼水平,到底算不算web伺服器中的高手,今天決定試試這傢伙的深淺。 恰好了解到apache自帶的ab(apache benchmark)工具可以進行簡單的壓力測試,所以就用它來試試。 流程 先配置tomcat8.5,

linux下使用ab工具對伺服器進行壓力測試

ab 安裝 yum -y install httpd-tools (centos) 安裝完成後使用ab -v 檢視ab版本確認是否安裝成功 選項 選項 含義 -A auth-username:password 對伺服器提供BASIC認證信任。 使

linux實訓第三天--linux使用ab命令來對web網站進行壓力測試/DDOS攻擊

ab -n 100 -c 10 http://127.0.0.1/index.html -n requests     Number of requests to perform     要執行的請求數量 -c concurrenc

Apache ab使用POST引數進行壓力測試 (服務端為Django)

寫在前面:     近日要上線一個基於HTTP協議的遊戲,所以要測一下壓力。     想到ab測試是比較簡便的,所以用ab來測試,但是問題來了,POST引數接不到。幾經測試,才發現傳遞POST引數的方法。 安裝ab: win下直接使用Apache的工具, cen

Apache伺服器下使用 ab 命令進行壓力測試

 ab是Apache超文字傳輸協議(HTTP)的效能測試工具。 其設計意圖是描繪當前所安裝的Apache的執行效能,主要是顯示你安裝的Apache每秒可以處理多少個請求.#ab -v可以看出其基本資訊這是一個基本命令-n1000表示總請求數為1000-才0表示併發使用者數為1

在window下如何利用apache web伺服器的ab命令進行壓力測試

         ab 的全稱是 ApacheBench , 是 Apache 附帶的一個小工具 , 專門用於 HTTP Server 的 benchmark testing , 可以同時模擬多個併發請求。前段時間看到公司的開發人員也在用它作一些測試,看起來也不錯,很簡

使用Apache的ab工具進行壓力測試

ab命令原理 Apache的ab命令模擬多執行緒併發請求,測試伺服器負載壓力,也可以測試nginx、lighthttp、IIS等其它Web伺服器的壓力。 Apache附帶的ab工具(使用的PHP環境是WAMP整合環境,ab工具位於D:\wamp\bin\apache\Apache2.2.21\bin)非常容

使用ApacheBench(ab)對URL進行壓力測試(HTTP直壓)

ApacheBench(ab)安裝 ubuntu 安裝 apt-get install apache2-utils // 可單獨安裝,與apache2無捆綁關係。若無法安裝,請更新源後重試。 其它系統安裝,自行搜尋。 ApacheBench

tomcat使用ab.exe進行壓力測試

今天用了下,記錄一下 首先進入tomcat安裝目錄中的bin目錄下,看有沒有ab.exe檔案(我一開始沒有沒注意,去下個ab.exe放到bin目錄下就好了) 1.cmd開啟控制檯,進入bin目錄如圖 然後輸入要測試的網址(例如測試www.baidu.com) 2.繼續輸入

Apache ab使用POST引數進行壓力測試

傳遞POST引數的步驟: 1,新建一個檔案,裡面放入POST引數。 注意,這個承載POST引數的檔案,不依賴於字尾名。可跨平臺(比如 Linux 下用 vi 建立的檔案,win下也可以用) POST文字內容如下: name=chang&password=1