安裝web
ab
是 apache
自帶的一款功能強大的測試工具,安裝了 apache
通常就自帶了apache
$ sudo apt-get install apache2-utils
測試windows
$ ab -c 1000 -n 10000 http://localhost:8080/ # 這個表示同時處理1000個請求並運行10000次
缺陷服務器
程序中有各類靜態聲明的固定長度的緩衝區。 另外,對命令行參數、服務器的響應頭和其餘外部輸入的解析也很簡單,這可能會有不良後果。cookie
它沒有完整地實現HTTP/1.x; 僅接受某些’預想’的響應格式。 strstr(3)的頻繁使用可能會帶來性能問題,即, 你多是在測試ab而不是服務器的性能。併發
HELPapp
具體結果請自行測試,詳細參數請參見 ab
,部分解釋以下:socket
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 測試所進行的最大秒數。其內部隱含值是-n 50000。 它可使對服務器的測試限制在一個固定的總時間之內。默認時,沒有時間限制 -s timeout Seconds to max. wait for each response Default is 30 seconds 單個請求最大延遲,默認爲30s -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 包含了須要POST的數據的文件 -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' POST數據所使用的Content-type頭信息 -v verbosity How much troubleshooting info to print 設置顯示信息的詳細程度 - 4或更大值會顯示頭信息, 3或更大值能夠顯示響應代碼(404, 200等), 2或更大值能夠顯示警告和其餘信息 -w Print out results in HTML tables 以HTML表的格式輸出結果。默認時,它是白色背景的兩列寬度的一張表 -i Use HEAD instead of GET 執行HEAD請求,而不是GET -x attributes String to insert as table attributes 設置<table>屬性的字符串。 此屬性被填入<table 這裏 > -y attributes String to insert as tr attributes 設置<tr>屬性的字符串 -z attributes String to insert as td or th attributes 設置<td>屬性的字符串 -C attribute Add cookie, eg. 'Apache=1234'. (repeatable) 對請求附加一個Cookie:行。 其典型形式是name=value的一個參數對。 此參數能夠重複 -H attribute Add Arbitrary header line, eg. 'Accept-Encoding: gzip' Inserted after all normal header lines. (repeatable) 對請求附加額外的頭信息。 此參數的典型形式是一個有效的頭信息行,其中包含了以冒號分隔的字段和值的對 (如, "Accept-Encoding: zip/zop;8bit") -A attribute Add Basic WWW Authentication, the attributes are a colon separated username and password. 對服務器提供BASIC認證信任。 用戶名和密碼由一個:隔開,並以base64編碼形式發送。 不管服務器是否須要(即, 是否發送了401認證需求代碼),此字符串都會被髮送 -P attribute Add Basic Proxy Authentication, the attributes are a colon separated username and password. 對一箇中轉代理提供BASIC認證信任。 用戶名和密碼由一個:隔開,並以base64編碼形式發送。 不管服務器是否須要(即, 是否發送了401認證需求代碼),此字符串都會被髮送 -X proxy:port Proxyserver and port number to use 對請求使用代理服務器 -V Print version number and exit 顯示版本號並退出 -k Use HTTP KeepAlive feature 啓用HTTP KeepAlive功能,即, 在一個HTTP會話中執行多個請求。 默認時,不啓用KeepAlive功能 -d Do not show percentiles served table. 不顯示"percentage served within XX [ms] table"的消息(爲之前的版本提供支持) -S Do not show confidence estimators and warnings. 不顯示中值和標準背離值, 並且在均值和中值爲標準背離值的1到2倍時,也不顯示警告或出錯信息。 默認時,會顯示 最小值/均值/最大值等數值。(爲之前的版本提供支持) -q Do not show progress when doing more than 150 requests 若是處理的請求數大於150, ab每處理大約10%或者100個請求時,會在stderr輸出一個進度計數。 此-q標記能夠抑制這些信息 -l Accept variable document length (use this for dynamic pages) -g filename Output collected data to gnuplot format file. 把全部測試結果寫入一個'gnuplot'或者TSV (以Tab分隔的)文件。 此文件能夠方便地導入到Gnuplot, IDL, Mathematica, Igor甚至Excel中。 其中的第一行爲標題 -e filename Output CSV file with percentages served 產生一個以逗號分隔的(CSV)文件, 其中包含了處理每一個相應百分比的請求所須要(從1%到100%)的相應百分比的(以微妙爲單位)時間。 因爲這種格式已經「二進制化」,因此比'gnuplot'格式更有用 -r Don't exit on socket receive errors. -h Display usage information (this message) 顯示使用方法 -Z ciphersuite Specify SSL/TLS cipher suite (See openssl ciphers) -f protocol Specify SSL/TLS protocol (SSL3, TLS1, TLS1.1, TLS1.2 or ALL)
http_load
以並行複用的方式運行,用以測試 web
服務器的吞吐量與負載。可是它不一樣於大多數壓力測試工具,它能夠以一個單一的進程運行,通常不會把客戶機搞死。還能夠測試 HTTPS
類的網站請求ide
安裝工具
$ wget http://soft.vpser.net/test/http_load/http_load-12mar2006.tar.gz $ tar zxvf http_load-12mar2006.tar.gz $ cd http_load-12mar2006 $ make && make install
測試
須要將測試的連接寫入到一個文件:
$ cat urls.txt http://localhost:8080
測試命令:
$ http_load -p 1000 -s 10 urls.txt # -p 併發訪問進程數 -s 訪問時間 須要訪問的URL文件 73980 fetches, 160 max parallel, 1.4796e+06 bytes, in 10.0013 seconds 20 mean bytes/connection 7397.02 fetches/sec, 147940 bytes/sec msecs/connect: 0.955713 mean, 1002.4 max, 0.038 min msecs/first-response: 4.52099 mean, 206.347 max, 0.533 min HTTP response codes: code 200 -- 73980
對比
測試結果中主要的指標是 fetches/sec、msecs/connect 這個選項,即服務器每秒可以響應的查詢次數,用這個指標來衡量性能。彷佛比 apache的ab準確率要高一些,也更有說服力一些。
Qpt-每秒響應用戶數和response time,每鏈接響應用戶時間。
測試的結果主要也是看這兩個值。固然僅有這兩個指標並不能完成對性能的分析,咱們還須要對服務器的cpu、men進行分析,才能得出結論
HELP
參數其實能夠自由組合,參數之間的選擇並無什麼限制。好比你寫成 http_load -parallel 5 -seconds 300 urls.txt
也是能夠的。
具體命令能夠參見 http_load -h
,部分解釋以下:
-parallel 簡寫-p :含義是併發的用戶進程數。 -fetches 簡寫-f :含義是總計的訪問次數 -rate 簡寫-p :含義是每秒的訪問頻率 -seconds 簡寫-s :含義是總計的訪問時間 準備URL文件:urllist.txt,文件格式是每行一個URL,URL最好超過50-100個測試效果比較好,每行一個url
webbench是Linux下的一個網站壓力測試工具,最多能夠模擬3萬個併發鏈接去測試網站的負載能力
安裝
$ wget http://soft.vpser.net/test/webbench/webbench-1.5.tar.gz $ tar zxvf webbench-1.5.tar.gz $ cd webbench-1.5/ $ make && make install
測試
$ webbench -c 1000 -t 10 http://localhost:8080 # -c 併發數 -t 運行測試時間 URL
總結
這個給出的結果內容比較少,不如上面幾個好用,不過這個程序卻是很小
HELP
更多的用法能夠參考 webbench -h
一款開源的壓力測試工具,能夠根據配置對一個WEB站點進行多用戶的併發訪問,記錄每一個用戶全部請求過程的相應時間,並在必定數量的併發訪問下重複進行
安裝
$ wget http://soft.vpser.net/test/siege/siege-2.67.tar.gz $ tar -zxf siege-2.67.tar.gz $ cd siege-2.67/ $ ./configure && make && make install
測試
$ siege -c 200 -r 10 http://localhost:8080
我寫了個
-r 10000
,看着他還在跑。。。。。。
HELP
具體的用法能夠參考 siege -h