一個網站管理員,日常的工作除了基本的維護服務正常運作外,另外一個重要的工作就是要保持順暢的服務,負責調校網站的效能,使其保持在最佳的狀態。網站伺服器如果使用的是Apache,將因為在開源碼社群中有許多可用的免費外掛模組,而可以外掛的方式來增加Apache伺服器的用途。但是,凡事有利就有弊,多增加一個模組,相對地就會多消耗資源來處理而影響服務的順暢度,此時就必須有一個適當的工具來客觀公正地測量效能表現。
14. 顯示發生錯誤的個數統計。其中client-timo指的是
從httpref發送測試要求至網站伺服器而網站伺服未在時限(由--timeout參數指定)內回覆的次數,這個數值通常可用來測試受測網站伺服器的最大連線數的門檻值。如果httpref發送了超過受測網站伺服器所能承受的連線量,那麼受測網站伺服器將無法即時處理。如此大量的連線而無法即時在時限內回覆測試程式,就會產生大量的client-timo錯誤,管理者可藉此評估受測網站伺服器的最大連線量的門檻值。
‧socket-timo:這是計算在與受測網站伺服器進行TCP連線的時候,所發生的SOCKET層級錯誤的次數。
‧Connrefused:表示計算httpref發出要求封包至受測網站伺服器,被網站伺服器拒絕(refuse)的次數。
‧Connreset:代表的是計算測試程式發出要求封包至受測網站伺服器,被網站伺服器重置(reset)的次數。
安裝並使用autobench
由於httpref的指令模式過於繁雜,也因此又有人發展出autobench程式,這是一個將httpref包裝起來的程式,使用者可以利用這個程式輕易地控制httpref的測試功能。
autobench程式除了可以同時用相同的測試條件測試不同的網站伺服器的效能外,另外一個特色在於,可將測試結果輸出成圖檔所需的文字資訊後,再利用gnuplot將文字輸出的結果轉換圖檔,讓使用者能更直覺地查看。
autobench程式的安裝方式相當簡單,將原始檔下載並解壓縮後,然後下達下列指令即可(如下#為註解):
安裝成功後,autobench提供一個組態檔(名稱為autobench.conf)以及兩個主要執行檔(autobench和bench2graph),其中autobench為主要執行檔,用來下達測試的各項條件(條件可定義在autobench.conf或利用指令參數的方式下達,本文將僅討論以指令方式下達條件)。
另一個bench2graph程式,則是透過gnuplot將autobench所產生的圖形資訊製作成圖檔。autobench提供的參數如表4所示。
表4 autobench使用參數
以下面範例來說,僅測試單一個主機,且該主機的IP資訊為192.168.1.1,而測試的網頁檔案名稱是index.php。此外,每個連線數(connection)包含10個要求(request)。
設定開始測試的時候,先行採用每秒20個連線數,而後每次均累加20個連線數/秒,直到最高200連線數/秒,設定測試的總連線數不得超過5,000個。當中如果有要求在5秒內沒有收到回覆(即逾時),就視為錯誤。最後,將測試結果寫入results.tsv檔案內:
在執行完畢後,會產生一個內存測試結果,可用來產生圖檔的圖形資訊的檔案。產生測試結果檔後,利用autobench提供的另外一支程式(名稱為bench2graph)與gnuplot程式搭配,再依據上述所得到的results.tsv檔案來產生測試結果圖形檔案,讓使用者能夠更直覺地查看測試結果資料。
首先,安裝gnuplot程式。經測試後發現,發現只有gnuplot 4.2.0版本(其他的版本都有出現無法支援選項的問題)可以正常產生圖檔。
基於以上的理由,這裡採用gnuplot 4.2.0版本。下載並解壓縮後,直接用下列指令編譯(#為註解):
在測試過程中還發現到另外一個問題,亦即bench2graph也要需要修正,否則也會無法正常產生相關圖檔,因此利用sed程式來置換bench2graph的相關字元,指令如下(其中#為註解):
ff
最後,執行以下指令(會要求使用者輸入標題資訊,如圖2的標題資訊):
g
執行該指令之後,將利用results.tsv內的資訊產生一個測試結果圖形,如圖2所示,其中X軸資訊為要求的數目,Y軸資訊為連線數的數目。
|
▲圖2 利用results.tsv內的資訊所產生的測試結果圖形。 |
如此一來,使用者就可以利用此類圖形更加直覺地掌握網站伺服器的效能狀況了。
<本文作者:吳惠麟,多年資安經驗,喜好利用開源碼建構相關解決方案,著有「資訊安全原理與實驗」等書。>