Apache ab 壓力並發測試載入器

來源:互聯網
上載者:User

標籤:dcl   name   osi   longest   length   ken   erro   最佳化   命令   

當你使用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 -n 1000 -c 10 127.0.0.1/index.php //使用絕對路徑! 1000次訪問並發量為 10 

 

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
指定使用的Proxy 伺服器和連接埠號碼,例如:"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.phpThis 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 requestsCompleted 200 requestsCompleted 300 requestsCompleted 400 requestsCompleted 500 requestsCompleted 600 requestsCompleted 700 requestsCompleted 800 requestsCompleted 900 requestsCompleted 1000 requestsFinished 1000 requestsServer 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   maxConnect:        0    0   0.3      0       1Processing:     6   23   4.2     24      30Waiting:        5   20   5.3     21      29Total:          6   23   4.2     24      30Percentage 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.phpThis 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 failuresapr_socket_connect(): 由於目標電腦積極拒絕,無法串連。   (730061)

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

 

測試 redis 的並發

<?php    $redis = new redis();    $redis->connect(‘127.0.0.1‘, 6379);    $time = date("Ymd H:i:s");    $redis->rpush(‘list1‘, $time);       echo "隊列總長度:".$redis->lLen(‘list1‘);    echo "<br/>";       /*     while (true) { //出對        $get = $redis->lpop(‘list‘);        if ($get) {            echo ‘出隊列--‘ . $get;            echo ‘<br/>‘;        } else {            echo ‘出隊完成‘;            return false;        }        }*/

 

摘自:http://www.cnblogs.com/wtcl/p/6795740.html

Apache ab 壓力並發測試載入器

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.