一、基準測試載入器
基準測試載入器提供在各種不同的類比使用者請求發生時有關Web伺服器響應的統計資訊。它們允許我們類比任意數量的請求Web伺服器上某個特定Web文檔的使用者,更重要的是,它允許我們類比任意數量的使用者同時訪問Web伺服器上的文檔(並發請求)。
例如,每個工具提供的資訊都與下列內容有關:
1、響應一個請求所花費的總時間
2、來自伺服器的總響應大小
3、Web伺服器每秒可以處理的請求總數
二、Apache Benchmark
在這裡我向大家介紹一下Apache Benchmark(ab/ab2)工具。
這是一個最著名的基準測試載入器之一,它是預設的Apache安裝的一部分,能夠通過類比對特定URL的任意數量請求來對Web伺服器進行負載測試。ab工具提供以下資訊:
1、傳輸的總資料大小(以位元組為單位)
2、Web伺服器在類比流量下每秒可以支援的請求總數
3、完成一個請求所花費的最長時間(以毫秒為單位)
4、完成一個請求所花費的最短時間(以毫秒為單位)
註:在ubuntu作業系統中啟動並執行是ab命令,而筆者使用的是opensuse,此系統下使用的命令是ab2.所以筆者在操作的時候使用的是ab2命令,但是為了方便,寫的時候一律寫ab命令。
使用ab工具還可以運行很多不同的負載模擬,例如:
1、對Web文檔的類比請求
2、指定時間內的請求
3、開啟Keep-Alive時的請求
最重要的是,Apache Benchmark是獨立與Apache Web伺服器的,從而可以在運行ab的同時使運行此工具的
電腦上的Web伺服器處於非使用中。
三、安裝Apache Benchmark
在linux/Unix系統下,只要安裝了apache之後就可以使用ab命令了。
在windows下,使用者可以開啟http://httpd.apache.org/。載入此頁後,單擊頁面左側的"Download from a mirror"(從鏡像下載)連結,找到適合你的系統的相應下載程式包,即Window 32 Binary版本,然後下載。
當程式包下載完後,就可以運行安裝嚮導在系統的任意位置上安裝軟體。我將Apache安裝再預設位置C:\Program Files\Apache Software Foundation,但也可以安裝在系統的任意位置。此處所選擇的位置就是APACHE_HOME引用所指向的位置。
現在,開啟\Apache2.2\bin。應該可以看到如所示檔案和目錄的集合。
四、使用ab命令
現在,讓我們來使用ab這個工具吧。(基準測試以www.example.com為例)
所有ab命令的組成遵循此結構:
ab [options] [full path to web document]
例:
ab -n 1 http://www.example.com/
n表示再指定的URL上執行的請求數。在這個例子裡,ab只請求Web文檔一次,但是n的值可以是小於50000的任一數字。預設情況下,n設定為1。
該命令的下一部分是URL部分。對於剛剛執行的命令,URL為http://www.example.com/。如果選擇測試此域中的某個文檔,如test.php(並不存在),則URL為:http://www.example.com/test.php
執行上面命令的結果如所示:
URLhttp://www.example.com的ab響應
的資料分為4個部分
1、伺服器資訊
包含Web伺服器啟動並執行軟體、主機名稱和伺服器監聽的連接埠號碼。
2、指令碼資訊
包含有關運行類比的Web文檔的資訊。Document Path包含請求的文檔,而Document Length包含所有HTML、映像、CSS、JS以及響應中任何內容的位元組數總和。
3、串連資訊
包含資訊的主體。它回答了諸如“收到請求響應需要多長時間?”、“返回了多少資料?”之類的資訊,最重要的是它回答了“處理文檔時Web伺服器可以支援多少使用者?”。
下表提供了此部分資料的完整列表和描述。
ab響應描述
4、串連指標細目分類
最後一個部分包含一個表,其中包含Connect、Processing、Waiting以及Total欄位。這些欄位告訴我們請求在每個過程狀態中所需的時間。我們最感興趣的是Total欄位及其最大、最小值列。
ab選項標記
下面結合上面的標記進行一些測試
1、並發測試
類比一個並發測試,同時對Web伺服器進行10個並發請求,直到進行到100個請求位置。使用c標記時的一項警告是讓使用的值小於等於要進行的請求總數n。
例:ab -n 100 -c 10 http://www.example.com
ab命令響應如
www.example.com的並發類比結果
通過類比的並發請求,我們可以看到Request per second欄位,並注意到Web伺服器每秒可以支援 個請求(使用者)。分析Connection Metrics的Total min和max列,我們注意到再10個並發請求的指定流量負載下,最快的響應為371毫秒,而最慢的請求花了575毫秒。
但是,我們知道流量不會只是持續1、2或3秒,高流量可能會持續幾分鐘、幾小時,甚至是幾天。下面讓我們運行一個類比來測試一下。
2、時間測試
t標記可以檢查在任何時間內Web伺服器執行的情況。
下面我們使用以下命令來類比10個使用者在20秒的時間內同時訪問網站:
ab -c 10 -t 20 http://www.example.com/
註:該命令不包含n標記,但預設情況下包含該標記並且使用t選項時ab將其值設定為50000。某些情況下,使用t選項時,最大請求數可能會達到50000,此時類比結束。
ab命令響應如
www.example.com/的基準測試結果(20秒內10個並發使用者)
此類比的結果指出,當10個並發使用者在20秒的時間內請求Web文檔時效能會下降。最快速的滿足請求花費了464毫秒,而最慢速的請求花費了1890毫秒。
五、ab陷阱
使用ab時有幾點警告。
1、再看看上面執行的命令,就會注意到在網域名稱的結尾有一個反斜線。如果你不請求該域中的特定文檔,則這個反斜線是必需的。
2、ab還可能會由於其傳遞給Web伺服器的使用者代理程式值而被某些Web伺服器阻止,因此在這些情況下,可能收不到任何資料。如果要解決這個問題,請使用可用的選項標記之一-H,來提供你的請求中自訂瀏覽器標題資訊。