實際的測試過程當中,咱們通常都是採用A、B兩臺機器,一臺跑Web服務,另一臺跑ab測試。也有的狀況是單機對單機可能測不出結果,那就要採用不少臺機器同是跑AB去請求一臺機器進行測試,根據多臺機器反饋的結果纔可以得出一個科學的測試結果。html
1.APACHE abweb
ab是Apache超文本傳輸協議(HTTP)的性能測試工具。其設計意圖是描繪當前所安裝的Apache的執行性能,主要是顯示你安裝的Apache每秒能夠處理多少個請求。算法
ab 不像 LR 那麼強大,可是它足夠輕便,若是隻是在開發過程當中想檢查一下某個模塊的響應狀況,或者作一些場景比較簡單的測試,ab 仍是一個不錯的選擇。apache
1.1. 參數說明安全
-n requests服務器
在測試會話中所執行的請求個數。默認僅執行一個請求,此時其結果不具備意義。cookie
-c concurrency網絡
一次產生的請求個數。默認是一次一個。併發
-t timelimit高併發
測試所進行的最大秒數。內部隱含值是"-n 50000"。它可使對服務器的測試限制在一個固定的總時間之內。默認時,沒有時間限制。
-p POST-file
包含了POST數據的文件。
-T content-type
POST數據時所使用的"Content-type"頭信息。
-v verbosity
設置顯示信息的詳細程度,4或更大值會顯示頭信息,3或更大值能夠顯示響應代碼(404,200等),2或更大值能夠顯示警告和其餘信息。
-w
以HTML表格形式輸出結果。默認時,它是白色背景的兩列寬度的一張表。
-i
執行HEAD請求,而不是GET 。
-x <table>-attributes
設置<table>屬性的字符串。此屬性被填入<table 這裏 > 。
-y <tr>-attributes
設置<tr>屬性的字符串。
-z <td>-attributes
設置<td>屬性的字符串。
-C cookie-name=value
對請求附加一個"Cookie:"頭行。其典型形式是 name=value 的一個參數對。此參數能夠重複。
-H custom-header
對請求附加額外的頭信息。此參數的典型形式是一個有效的頭信息行,其中包含了以冒號分隔的字段和值(如:"Accept-Encoding: zip/zop;8bit")。
-A auth-username:password
向服務器提供基本認證信息。用戶名和密碼之間由一個":"隔開,並將被以base64編碼形式發送。不管服務器是否須要(便是否發送了401認證需求代碼),此字符串都會被髮送。
-P proxy-auth-username:password
對一箇中轉代理提供基本認證信息。用戶名和密碼由一個":"隔開,並將被以base64編碼形式發送。不管服務器是否須要(便是否發送了407代理認證需求代碼),此字符串都會被髮送。
-X proxy[:port]
對請求使用代理服務器。
-V
顯示版本號並退出。
-k
啓用KeepAlive功能,即在一個HTTP會話中執行多個請求。默認不啓用KeepAlive功能。
-d
不顯示"percentage served within XX [ms] table"消息(爲之前的版本提供支持)。
-S
不顯示中值和標準誤差值,並且在均值和中值爲標準誤差值的1到2倍時,也不顯示警告或出錯信息。默認時,會顯示最小值/均值/最大值等數值。(爲之前的版本提供支持)
-g gnuplot-file
把全部測試結果寫入一個"gnuplot"或者TSV(以Tab分隔)文件。此文件能夠方便地導入到 Gnuplot, IDL, Mathematica, Excel中。其中的第一行爲標題。
-e csv-file
產生一個逗號分隔(CSV)文件,其中包含了處理每一個相應百分比請求(從1%到100%)所須要的相應百分比時間(以微秒爲單位)。因爲這種格式已經"二進制化",因此比"gnuplot"格式更有用。
-h
顯示使用方法的幫助信息。
1.2. 舉例
ab -c 10 -n 10 -t 30 http://www.google.com/ 輸出樣例: This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright 2006 The Apache Software Foundation, http://www.apache.org/ Benchmarking www.google.com (be patient) Finished 779 requests Server Software: gws Server Hostname: www.google.com //服務器主機名 ServerPort: 80 //服務器端口 Document Path: / //測試的頁面文檔 Document Length: 458 bytes //文檔大小 Concurrency Level: 10 //併發數 Time taken for tests: 30.87239 seconds //整個測試持續的時間 Complete requests: 779 //完成的請求數量 Failed requests: 0 //失敗的請求數量 Write errors: 0 Non-2xx responses: 779 Total transferred: 1004131 bytes //整個場景中的網絡傳輸量 HTML transferred: 356782 bytes //整個場景中的HTML內容傳輸量 Requests per second: 25.89 [#/sec] (mean) //你們最關心的指標之一,至關於 LR 中的 每秒事務數 ,後面括號中的 mean 表示這是一個平均值 Time per request: 386.229 [ms] (mean) //你們最關心的指標之二,至關於 LR 中的 平均事務響應時間 ,後面括號中的 mean 表示這是一個平均值 Time per request: 38.623 [ms] (mean, across all concurrent requests) //每一個請求實際運行時間的平均值 Transfer rate: 32.57 [Kbytes/sec] received //平均每秒網絡上的流量,能夠幫助排除是否存在網絡流量過大致使響應時間延長的問題 Connection Times (ms) min mean[+/-sd] median max Connect: 36 167 100.1 132 735 Processing: 62 215 143.6 171 910 Waiting: 61 203 117.4 167 909 Total: 98 382 175.8 344 1243 //網絡上消耗的時間的分解,各項數據的具體算法還不是很清楚 /*下面的內容爲整個場景中全部請求的響應狀況。在場景中每一個請求都有一個響應時間,其中 50% 的用戶響應時間小於 3064 毫秒,60 % 的用戶響應時間小於 3094 毫秒,最大的響應時間小於 3184 毫秒*/ Percentage of the requests served within a certain time (ms) 50% 344 66% 395 75% 451 80% 520 90% 626 95% 716 98% 931 99% 977 100% 1243 (longest request)
2.webbench
webbench是有名的網站壓力測試工具,它是由Lionbridge公司(http://www.lionbridge.com)開發。它的幫助文件和文檔請到:http://home.tiscali.cz/~cz210552/webbench.html 上查看。
Webbech 能測試處在相同硬件上,不一樣服務的性能以及不一樣硬件上同一個服務的運行情況。webBech的標準測試能夠向咱們展現服務器的兩項內容:每秒鐘相應請求數 和每秒鐘傳輸數據量。webbench不但能具備便準靜態頁面的測試能力,還能對動態頁面(ASP,PHP,JAVA,CGI)進行測試的能力。還有就是 他支持對含有SSL的安全網站例如電子商務網站進行靜態或動態的性能測試。
2.1. 參數說明
-f –force
不等服務器回覆
-r –reload
發送從新load請求,等同於Pragma:no-cache.
-t –time
測試所進行的最大秒數。默認30。
-p –proxy
使用代理服務器
-c --clients
一次產生的請求個數。默認是1。
-9 --http09
使用http/0.9協議
-1 --http10
使用http/1.0協議
-2 –http11
使用http/1.1協議
--get
使用get請求方法
--head
使用head請求方法
--options
使用options請求方法
--trace
使用trace請求方法
-? –h –help
顯示幫助信息
-V –version
顯示程序的版本信息
2.2. 例子
webbench -c 100 -t 30 http://www.google.com/
輸出樣例:
Webbench - Simple Web Benchmark 1.5 Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software. Benchmarking: GET http://www.google.com/ 100 clients, running 30 sec. Speed=4028 pages/min, 86577 bytes/sec. Requests: 2014 susceed, 0 failed.
3.http_load
程序很是小,解壓後也不到100K
http_load以並行複用的方式運行,用以測試web服務器 的吞吐量與負載 。可是它不一樣於大多數壓力測試工具,它能夠以一個單一的進程運行,通常不會把客戶機搞死。還能夠測試HTTPS類的網站請求。
官網:http://www.acme.com/software/http_load/
下載地址:
wget http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz
3.1. 參數說明
-parallel 簡寫-p :含義是併發的用戶進程數。
-fetches 簡寫-f :含義是總計的訪問次數
-rate 簡寫-r :含義是每秒的訪問頻率
-seconds簡寫-s :含義是總計的訪問時間
3.2. 例子
http_load -p 20 -f 20 www.chedong.com.url
輸出樣例:
20 fetches, 20 max parallel, 790105 bytes, in 4.34421 seconds //說明在上面的測試中運行了20個請求,最大的併發進程數是20,總計傳輸的數據是790105bytes,運行的時間是4.34421秒 39505.2 mean bytes/connection //說明每一鏈接平均傳輸的數據量790105/20=39505.2 4.60383 fetches/sec, 181875 bytes/sec //說明每秒的響應請求爲4.60383,每秒傳遞的數據爲181875 bytes/sec msecs/connect: 305.351 mean, 3151.05 max, 146.267 min //說明每鏈接的平均響應時間是305.351msecs,最大的響應時間3151.05msecs,最小的響應時間146.267msecs msecs/first-response: 772.81 mean, 1555.86 max, 155.245 min HTTP response codes: code 200 -- 20 //說明打開響應頁面的類型,若是403的類型過多,那可能要注意是否系統 遇到了瓶頸。
4.Siege
雖然Apache自帶一個壓力測試工具ab,可是ab的功能太簡單了,沒法模擬真實的web訪問,因此咱們要用到更增強大的web壓力測試工具——Siege。Siege(英文意思是圍攻)是一個壓力測試和評測工具,設計用於WEB開發這評估應用在壓力下的承受能力:能夠根據配置對一個WEB站點進行多用戶的併發訪問,記錄每一個用戶全部請求過程的相應時間,並在必定數量的併發訪問下重複進行。
Siege時一個開放源代碼項目:http://www.joedog.org/siege/下載:
wget ftp://sid.joedog.org/pub/siege/siege-latest.tar.gz
4.1. 參數說明
-cNUM
設置併發的用戶(鏈接)數量,好比-c10,設置併發10個鏈接。默認的鏈接數量能夠到~/.siegerc中查看,指令爲concurrent = x,前面我們已經調整了默認併發鏈接爲50。
-rNUM
(repetitions),重複數量,即每一個鏈接發出的請求數量,設置這個的話,就不須要設置-t了。對應.siegerc配置文件中的reps = x指令
-tNUM
(time),持續時間,即測試持續時間,在NUM時間後結束,單位默認爲分,好比-t10,那麼測試時間爲10分鐘,-t10s,則測試時間爲10秒鐘。對應.siegerc中的指令爲time = x指令
-b
(benchmark),基準測試,若是設置這個參數的話,那麼delay時間爲0。在.siegerc中我們修改成默認開啓。
-f url.txt
(file),這是url列表文件。對應.siegerc配置文件中的file = x指令
4.2. 例子
siege -c 20 -r 20 -f www.chedong.com.url
www.chedong.com.url內容:
http://www.chedong.com/tech/
http://www.chedong.com/tech/acdsee.html
http://www.chedong.com/tech/ant.html
http://www.chedong.com/tech/apache_install.html
http://www.chedong.com/tech/awstats.html
http://www.chedong.com/tech/cache.html
http://www.chedong.com/tech/click.html
http://www.chedong.com/tech/cms.html
http://www.chedong.com/tech/compress.html
http://www.chedong.com/tech/cvs_card.html
http://www.chedong.com/tech/default.html
http://www.chedong.com/tech/dev.html
http://www.chedong.com/tech/gnu.html
輸出樣例:
Lifting the server siege… done. Transactions: 400 hits //完成400次處理 Availability: 100.00 % //100.00 % 成功率 Elapsed time: 34.61 secs //總共用時 Data transferred: 3.94 MB //共數據傳輸3.94MB Response time: 1.37 secs //相應用時1.37秒:顯示網絡鏈接的速度 Transaction rate: 11.56 trans/sec //平均每秒完成11.56次處理:表示服務器後臺處理的速度 Throughput: 0.11 MB/sec //平均每秒傳送數據0.11MB Concurrency: 15.87 //實際最高併發數15.87 Successful transactions: 400 //成功處理次數 Failed transactions: 0 //失敗處理次數 Longest transaction: 11.13 //每次傳輸所花最長時間 Shortest transaction: 0.34 //每次傳輸所花最短期
5. 對比
輸出壓力的能力:
軟件 |
每秒處理數 |
webbench |
4876 |
ab |
4059 |
http_load |
3148 |
siege |
1822 |
從上面能夠看過,webbench 能力最強, ab 緊接着來的。其它的壓力軟件,能打出的每秒的能力差些。
功能對比
針對一些經常使用的功能,進行了一下對比,方便咱們選擇本身合適的測試軟件。
|
自定義http頭 |
url列表 |
隨機 URL |
https支持 |
KeepAlive |
cookie支持 |
HTTP1.0/1支持 |
認證支持 |
時間測試壓力 |
webbench |
|
|
|
|
|
|
yes |
|
yes |
ab |
yes |
|
|
|
yes |
yes |
|
yes |
|
http_load |
|
yes |
yes |
yes |
|
|
|
|
yes |
siege |
yes |
yes |
yes |
yes |
|
|
|
|
|
注意:
1) 實際的測試過程當中,咱們通常都是採用A、B兩臺機器,一臺跑Web服務,另一臺跑ab測試。也有的狀況是單機對單機可能測不出結果,那就要採用不少臺機器同是跑AB去請求一臺機器進行測試,根據多臺機器反饋的結果纔可以得出一個科學的測試結果。作壓力測試時,該軟件自身也會消耗CPU和內存資源,爲了測試準確,請將測試軟件安裝在別的服務器上。
2) 不要測試上線以後的網站,壓垮了可很差玩。
3) ab -n 100 -c 10 http://www.baidu.com/ ——(注意,這裏要保留 "/" 根目錄哦);webbench也是同樣。