如何建立起WCAT
Microsoft的Web容量分析工具(WCAT) 是測試你的客戶-伺服器網路設定的必備工具。這個工具在你的網路上對多種工作量的情境進行模擬,允許你確定你的網路和伺服器的最佳配置。WCAT是專門為評估在Microsoft Windows NT 伺服器和Microsoft Internet資訊服務器(IIS)上啟動並執行Internet伺服器而設計的,但是你可以將它用於幾乎所有類型的Web 服務器中。不過有一個局限:ASP和ISAPI不在UNIX上運行,所以不能在那個環境下測試。這個工具有一個最好的地方就是價格--可以免費下載。下載的內容中包括非常易於閱讀和理解的詳細文檔。如果你想使用WCAT的話,我建議你先閱讀這些文檔。
WCAT提供了40個隨時可啟動並執行工作量模擬,讓你在不同層次的串連下,測試從伺服器進行各種規模的頁面或內容的下載。從文檔中可以看到這些測試的一個詳細列表。你可以使用ASP、Internet訪問權應用程式編程介面(ISAPI)的副檔名及公用網關介面 (CGI) 應用程式來測試伺服器的效能。這是有用的,即使你現在沒有使用這些副檔名,因為你可以在配置之前先對副檔名進行測試。另外,WCAT測試回合模擬來為較低層級的通訊測試伺服器上的反應,這些較低層次的通訊包括加密通訊端協議層(SSL)2.0 和3.0 、私用通訊技術(PCT) 1.0 加密法以及超文字傳輸通訊協定 (HTTP) (HTTP) 保持(在最初請求完成後,允許將串連維持)。
如果你需要更廣泛的測試,可以建立自己的定製模擬並用WCAT運行它們。你甚至可以測試那些與一個以上網路相已連線的服務器,並測試cookies 的使用。你還可以用它測試你的本網。
如何建立起WCAT
現在你可能急切地想看看WCAT ,那麼我們就先來看看開始測試之前首先需要進行的典型設定。要運行一個WCAT測試,你需要4個組成部分:一個伺服器、一個客戶、一個控制器和一個網路。當你運行測試時,控制器和客戶機運行不同的WCAT,而伺服器用WCAT檔案對請求作出響應(那些檔案依賴於你正在啟動並執行模擬)。
■伺服器
伺服器的責任是對響應串連的請求、管理串連、接收、處理並響應對Web 內容(即Web 頁面)的請求。如果你想安裝所有的靜態檔案測試,那麼硬碟上需要有220M空間。ASP測試需要的空間不到110K,除了你想要測試的特定內容,在伺服器上不需要安裝任何東西。你必須安裝一個TCP/IP ,並將其限制在網路介面卡。
在Windows NT上,當你設定伺服器組件時,設定程式會自動將必要的檔案複製到適當位置。如果你沒有運行Windows NT,那麼有些工作就必須自己做。安裝伺服器檔案,將那些以perfsize 開頭的目錄從Windows NT伺服器的www根目錄複製到你將要使用的伺服器。別忘了還要複製這些目錄中的檔案。
■客戶機
客戶機負責讓伺服器努力工作。說得具體一些,在一個WCAT測試中,你可以在不同層次配置客戶,配置的方法是指定測試中客戶瀏覽器的個數;客戶請求的大小、類型及速度;發送請求的頻率及所請求的頁面;測試持續的時間。不必給每個你想測試的客戶一個客戶機。每個WCAT客戶測試都在它自己的程式內運行,所以每個客戶機上可以運行一個以上的客戶。這些就是所謂的虛擬客戶。每個客戶機最多可以運行200個客戶,這就允許你用較少的資源測試數量驚人的串連(注意:測試200個物理客戶只是一個近似數。200個物理客戶會給伺服器造成更大的負載)。
你要監控電腦上記憶體的使用方式。如果客戶使用的多於它的實體記憶體(換句話說,它瘋狂地進行內容交換),那麼你就會感覺速度的降低,而應該減少虛擬客戶的數量。通常,除非你的硬體條件太差,客戶是不會有問題的。
客戶機上必須安裝Windows NT 伺服器或Windows NT工作站(4.0),硬碟上有1M 可用空間,安裝TCP/IP並限制在網路介面卡上。
■控制器
WCAT控制器負責管理WCAT測試。這就將在其它機器上進行的實際測試與測試管理的負載分開了。控制器使用輸入檔案,這些檔案規定如何運行測試、測試何時結束,然後將結果寫入輸出檔案中。
要運行預先準備好的測試,控制器上需要包含3個輸入檔案。如果你想定製測試程式,就可以使用你自己版本的這些檔案。你需要包含一個設定檔,規定客戶數、虛擬客戶數及測試持續的時間。設定檔的副檔名是.cfg ,根據正在啟動並執行測試命名。因此,如果測試名為test1, 設定檔就被命名為test1.cfg。你需要的另一個輸入檔案是你的指令檔。這個檔案中包含了從伺服器請求的頁面名。指令檔的副檔名是.scr ,按照前面的例子,你的指令檔名應為test1.scr。第三個需要的輸入檔案是分布檔案,它規定了客戶請求的頻率。這個輸入檔案的副檔名是.dst ,在上面的例子中命名為test1.dst 。
還有一個附加的可選的輸入檔案,效能計數器檔案,可以用在計數器上來監控效能的監控計數器。它的副檔名是.pfc, 在上例中,這個檔案應該命名為 test1.pfc。
有了輸入檔案,現在該說說輸出檔案了。控制器產生一個記錄檔,其中包含著測試中收集的統計資料。這個記錄檔的副檔名是.log,它是一個用逗號分隔的文字檔,可以用文字編輯器編輯,或作為試算表或資料庫的輸入。如果你指定一個效能計數器為輸入,那麼控制器還將產生一個效能計數器結果檔案(副檔名為.prf )。
作為控制器的機器必須安裝Windows NT伺服器或Windows NT工作站( 4.0) ,硬碟上要有10M可用空間,要安裝TCP/IP 並限制在網路介面卡上。
■網路
用於WCAT的網路只是你的客戶機、伺服器、控制器之間的簡單通訊串連。網路必須使用TCP/IP,並且網路頻寬最好是100M位元/秒。當你建立測試時,一定要確定與網路連接的機器都配置得正確,這樣你就能知道效能的問題不是由於安裝不當造成的。
■效能及壓力測試
為了確定你的Web 應用程式可能達到的最好效能,做如下建議:
◎一個孤立的私用網路(這是理想的)
◎足夠的客戶,以充分發揮伺服器的潛力
◎充分的網路頻寬(100 Mbps 或更高)
◎多個網卡以分散負載
◎一個多處理器機器用於伸縮性測試(這是理想的)
◎重新運行測試,查看測試結果是否能再生
◎先用瀏覽器查看頁面,以確定應用程式設定和運行正確
如果你想測試應用程式在平均負載下的效能,就應該設定一些效能指標(每秒裝載頁面數、CPU的使用比例、回應時間),並努力達到這些指標。
如果你的目的是進行壓力測試,那麼你不一定需要私用網路和許多客戶。將你的應用程式置於適度的負載下就足以暴露問題;在伺服器上運行控制器和一個客戶就足夠了。這當然比在單一瀏覽器中重新整理頁面更有效。如果你想在較高層進行壓力測試,那麼使用私用網路和許多客戶是有好處的。另外在多處理器機器上運行壓力測試也是發現流的問題的好方法。
用設定程式在每台電腦上安裝了所需要的檔案之後,第一次運行WCAT時應該配置客戶和控制器機器。你需要知道這些機器的IP地址。通過使用TCP/IP的 ping 命令列功能,可以擷取IP地址,這個地址對應於方括弧中的4個數字(比如說, [11.1.38.2])。這些數字代表機器在網路上的IP地址。
■配置
有了IP地址以後,你就可以配置客戶和控制器了。WCAT控制器是在命令列提示符下配置的。只需要進入包含控制器的目錄(在預設狀態下,這個目錄是 /webctrl, 因此你應該鍵入 cd /webctrl),然後鍵入config IP地址或電腦名稱。如果你要測試多個網路的話,就用電腦名稱。
配置客戶與配置控制器一樣。這次還是在命令提示字元下,進入客戶所在的目錄,並鍵入config 控制器名IP地址(控制器名指的是控制器機器的名字,IP地址指的是客戶機)。
■運行
運行WCAT主要有5個步驟:
◎第一步:起動WCAT客戶、控制器和伺服器。
在客戶機上起動WCAT客戶,方法是在提示符下,轉到客戶目錄,鍵入client (這是一個批次檔,啟動並執行程式是wcclient.exe)。程式試圖與控制器進行串連。如果串連不上,那麼10秒鐘之後程式再進行串連,並繼續每10秒鐘串連一次,直到你終止wcclient.exe的運行。要終止wcclient.exe,在命令提示字元下鍵入CTRL+C。
然後,在控制器上起動WCAT的控制器程式(wcctl.exe) ,指定你想要啟動並執行測試。在命令提示字元下,轉到控制器目錄,鍵入run 測試名 [開關] (其中測試名是你所啟動並執行測試的名字,開關是選項)。當你運行控制器程式時,使用-a 伺服器IP 和-n 伺服器名。-a 開關指定將要測試的伺服器,-n 開關指定伺服器名。在WCAT文檔中可以找到所有可能用到的開關列表及它們的使用方法。
最後在伺服器上起動IIS和HTTP 服務。
◎第二步:準備
在準備階段,控制器向客戶機發送指令,客戶開始向伺服器發送請求。在準備階段不收集輸出,因為這時伺服器的反應速度比平時要慢(經常用到的頁面、對象及指令還沒有被處理器所緩衝)。
◎第三步:實驗
在實驗階段,控制器指示客戶機向伺服器發送特別的請求,伺服器作出反應。收集統計數字,並將狀態資訊發送給客戶機。控制器監控測試的全過程。這時WCAT正在確定你的伺服器基於所模擬的工作量的效能。如果你已經指定,你想要監控效能計數器,那麼在實驗階段,控制器就監控這些值。
◎第四步:冷卻
所有工作完成後,就到了冷卻階段(你應該不希望你的伺服器抽筋吧,是嗎?)。在冷卻階段,控制器指示客戶機停止發送請求。客戶結束他們的操作,雖然客戶繼續收集統計資料,這些資料不再為輸出而儲存;因為冷卻並不指示一個真正的工作量,因此這些統計資料沒用。
◎第五步:報告
在報告階段,客戶將收集的資料發送給控制器。一旦所有的資料都發送之後,控制器就關閉客戶串連。要知道WCAT 還在你的客戶上運行,因此它們會恢複到初始配置並試圖與控制器串連。控制器所收集的資料被寫入一個記錄檔中。寫入的一行文本代表一個客戶,其中包括讀取頁面的總數、每秒讀取頁面的平均數、每個客戶讀取頁面的實際數。這時,如果你指定你想要監控效能計數器,這個數字將被寫入效能結果檔案中。
分析結果
寫到記錄檔中的資訊包括一個檔案頭、結果、效能計數器(如果你指定要將這些包含進去的話)、檔案及類統計資料。頭包含測試的一般資訊,如運行測試的日期和時間、使用的輸入和輸出檔案及期間。在WCAT文檔中有關於頭的域、結構的詳細資料,以及一個例子。
向.log 檔案中寫入的有許多細節,其中最有趣的可能就是“讀取頁面”表。第一個數字欄是所有客戶機所讀取的頁面的總數。第二欄是第一個客戶機每秒中所看到的頁面的速率。第三欄是第一個客戶機所看到的頁面的總數。如果你有多個客戶,就會在後面繼續看到每個機器的速率和總數。
記錄檔的結果區是一個表格,它總結了在測試中所收集到的所有資料。收集到的資料包括請求的頁面數、回應時間、串連以及有可能遇到的所有錯誤。在WCAT文檔中有表格的格式及每欄的構造。
如果你指定想要監控效能計數器,那麼WCAT日誌中有一部分詳細記載了這個內容。這個資料還在一個表格中表現,包含每頁中每個計數器的平均值。
日誌的檔案區包含一個表格,其中有測試中請求的檔案數及客戶已接收的檔案數。
日誌的最後一部分是類統計資料區,其中包含的資料代表客戶上頁面恢複的速率。包括成功恢複的頁面數、錯誤率以及某一特定類型的頁面(換句話說,就是頁面的類)被請求的比率。你可以用這些資料來確定哪一類頁面被請求得最多。
使用和記錄效能計數器
前面已經提到過,你可以選擇在基於Windows NT的伺服器上使用WCAT 的效能計數器。用效能計數器,你可以測量處理器、實體記憶體、硬碟子系統、記憶體緩衝的使用方式,還可以使用所使用的服務(如IIS)的效能。為了使用效能計數器,在運行控制器時需要使用-p開關,你需要提供一個副檔名為.pfc 的檔案,它指定你想要監控的計數器。預設狀態下,這個檔案在WCAT控制器的/Scripts 目錄下。
使用Sample.pfc
有一個效能計數器的樣本輸入檔案--Sample.pfc--被安裝在WCAT控制器的/Scripts 目錄下。要監控的每個計數器都在單獨的一行中列出,向靠左對齊,無定位字元。每一行中可以加入注釋,在每行開頭加一個#號即可。每一個檔案中最多有50個計數器。.pfc 檔案中一行的文法是object(instance)/counter。 Object 是你想要監控的項目的名字,如過程。instance是對象的特定例示的名字, counter 是你想要監控的對象的實際屬性。要監控IIS過程Inetinfo所使用的處理器時間,可以在.pfc 檔案中增加以下條目。在這個例子中,Processor 是對象,inetinfo 是例示,%Processor Time 是計數器。
Processor(inetinfo)/% Processor Time
為了確定你可以監控的對象,運行效能監控功能(在命令提示字元下運行perfmon.exe ),從編輯菜單中選擇“增加到圖表”項。將會出現以下的對話方塊對你進行提示:
在對話方塊中,你可以從下拉式功能表中選擇對象、例示和計數器。點擊解釋按鈕,可以得到每個計數器意義的描述。
下表列出了一些計數器:
| 對象 |
計數 |
注釋 |
| Active Server Pages |
分配的記憶體 |
|
| |
每秒的請求 |
ASP滿足的請求的速率 |
| |
請求執行時間 |
一個請求執行所用的平均時間 |
| |
請求等候時間 |
執行前一個請求在隊列中等候的時間 |
| |
失敗的請求總數 |
|
| |
排隊的請求數 |
|
| |
拒絕的請求數 |
|
| |
當前的會話 |
|
| Process(inetinfo) |
處理器時間 |
|
| |
特別時間 |
|
| |
使用者時間 |
|
| |
私用位元組 |
這個過程使用的記憶體總數。如果這個數字無限增長,就說明某些東西、某些地方(如ISAPI ASP 組件) 功能減弱 |
| |
工作設定 |
|
| |
線程流計數器 |
|
| Internet Information Services Global |
快取命中 |
|
| Memory |
可用位元組 |
|
| |
每秒分頁錯誤 |
|
| Web Service(_Total) |
每秒接收位元組數 |
|
| |
每秒發送位元組數 |
|
| |
當前匿名使用者 |
|
| |
當前非匿名使用者 |
|
| |
當前串連 |
|
| System |
總處理器時間 |
|
| |
每秒上下文轉換 |
|
| |
每秒系統調用 |
|
| Processor(0) (each processor) |
DPC速率 |
|
| |
每秒中斷數 |
|
| |
每秒排隊的DPC |
|
效能計數器中的結果要寫入一個特殊結果檔案, testname.prf (其中 testname是測試的名字)。這是一個用逗號分隔開的文字檔,可以用任何標準文字編輯器來閱讀,或用它來作為試算表或資料庫的輸入。但是這個檔案不能直接用PerfMon讀。這個檔案包含頭資訊(計數器數、機器名、命名的起始時間)、欄頭、一個包含收集的效能資料的表格。有關完整的文法和這個檔案的使用,可以參考WCAT文檔。
現在我們更多的為大家介紹一些WCAT的應用。
編寫你自己的WCAT測試指令碼
你可以定製WCAT 啟動並執行情境,方法是指定不同的命令列開關、修改伺服器和客戶機的配置、使用你自己的ASP、ISAPI或 CGI 指令碼、改變客戶和控制器的輸入檔案。在前面的部分,我談到了改變效能計數器檔案的能力。你還可以根據需要改變更配置置(.cfg)、指令碼(.scr)和分配(.dst)檔案。
預設狀態下,設定檔位於控制器的/webctrl 目錄下。這個檔案中的資訊包含測試中使用的緩衝器數、要使用的客戶機數、要使用的流數以及測試持續的時間。
要確定你運行測試所需要的指令碼,你可以修改指令檔。在這個檔案中,你可以指定你想要測試的特定ASP,以及ISAPI 和 CGI 擴充。以下是WCAT 文檔中的一個樣本指令碼文檔。
# ######################################################################
#
# Test script file for WCAT
#
# ######################################################################
# Format of Script Specification:
#
# ClassId Operation Files
# Note: Operation Strings are case insensitive
#
# Plaza Welcome page = >
NEW TRANSACTION
classId = 1
NEW REQUEST HTTP
Verb = "GET"
URL = "/scripts/welcome.py"
# Click Repeat Shopper = > Plaza Lobby
NEW TRANSACTION
classId = 2
NEW REQUEST HTTP
Verb = "GET"
URL = "/prd.i/pgen/plaza/JQ04Q9JF66SH2JS700Q79TREBNBGAU1M/plaza1.html"
# Click AG = > AG Lobby
NEW TRANSACTION
classId = 3
NEW REQUEST HTTP
Verb = "GET"
URL = "/prd.i/pgen/ag/JQ04Q9JF66SH2JS700Q79TREBNBGAU1M/lobby.html"
# Click Big Picture
NEW TRANSACTION
classId = 4
NEW REQUEST HTTP
Verb = "GET"
URL = "/prd.i/pgen/ag/JQ04Q9JF66SH2JS700Q79TREBNBGAU1M/ag_bigpicture.html"
分配檔案用來設定每個處理所使用的時間百分數。如果你定製你的指令檔,還需要給測試使用一個定製的分配檔案。
使用IIS擴充記錄檔發現已耗用時間錯誤
除了使用WCAT,你還可以使用IIS的擴充日誌功能發現ASP中的錯誤。你可以開啟URI_Query 擴充記錄檔中記載ASP的錯誤。預設狀態下,這個檔案是沒有開啟的。開啟它的技巧有以下幾步:
1、選擇一個Web或 FTP 網站,開啟它的屬性頁面。
2、啟用日誌,選擇W3C 擴充記錄檔格式。
3、點擊屬性。
4、在擴充屬性頁上,選擇你想要記入日誌的域(在本例中,, URI_Query)。預設狀態下啟用的是時間、
客戶IP地址、方法、URI Stem 和HTTP狀態。
5、點擊應用。
用WCAT維護Session 資料
如果你想用WCAT維護 ASP 的Session 資料,可以利用cookies。在你的指令碼(.scr) 測試檔案頂部增加這樣一行:
Set Cookie="< CookieName >"
你將cookie 設定成什麼並不重要;只要你設定了就行。通過設定一個cookie ,WCAT建立的每個虛擬目錄就都有了它自己的ASPSESSIONID cookie,這就提供了維護session 狀態的能力。就是說WCAT為每個虛擬使用者維護一個持久的cookie 集合。要清除某一特定cookie的值,可以使用以下指令碼:
NEW REQUEST CLEAR_COOKIE
Set Cookie = "< cookie to clear >"
在你的指令碼中發行就緒多個CLEAR_COOKIE和Set Cookie 指示,以控制cookie 的壽命。構成任意的cookie 請求的唯一方法就是在Set RequestHeader 指示中進行編碼。這對於測試那些不使用ASP session狀態的客戶應用程式是有用的。
用WCAT模擬郵遞的資料
在一個真正的Web 應用程式中,你會發現有時需要將某些資料郵遞到一個URL。Web Publishing 程式員參考資料提供了你可能會用到的Web Publishing API 的詳細情況。使用WCAT時,你可以模擬將資料郵遞到一個特定的URL。要將資料郵遞到一個ASP表單,有以下步驟:
◎Verb = "POST"
◎RequestHeader = "Content-Type: application/x-www-form-urlencoded/r/n"
◎RequestData = "Field1=Value1&Field2=Value2&Field3=Value3/r/n"
新WCAT功能及修複
在WCAT的最新版本中,增加了一些新功能和臭蟲修複。包括以下內容:
1、如果測試期間沒有進行請求,記錄檔位元組計數器就不被破壞。
2、如果你有一個不能完成的重新導向,現在就將其列為失敗的串連。
3、使用者名稱和口令現在可以接收一個檔案名稱,並可以使用這個檔案的內容。每個檔案只能有一個使用者名稱-口令對。
4、現在可以規定通過一個請求來測試伺服器。
5、改進了SSL測試。現在可以用新指示SSL_Protocol來指定用於SSL (https) 請求的連接埠。如果SSL_Protocol 沒有指定,那麼WCAT就要與伺服器協商使用最好的安全性通訊協定。在完全理解如何使用它之前,不要使用 the SSL Provider指示。在指令碼樣板中也取消了這個指示的使用。
6、現在在輸入檔案中的任何地方都可以替換URL(而不是只在頭部)。由於使用了宏替換,會降低效能。但是效能的降低不會很大,除非你在使用大型檔案進行替換。效能的降低只會發生在WCAT第一次通過每個檔案時。這就是在準備階段,所以,如果你選擇了使用替換功能,就要確保你的準備階段足夠長以處理這個額外的工作。
在WCAT以前的版本中,不管是否使用了替換,都會由於使用了宏而對效能有所影響。現在當使用了動態和每個請求都變化的宏時,這樣的輕微影響依然會發生。
7、改進了HTTP重新導向操作來支援伺服器、特定連接埠號碼及安全性。通過MaxRedirects指令碼指示(它是一個DWORD),你可以設定重新導向的最大值。預設狀態下,這個最大值是0,它代表無限多的重新導向。
總結
WCAT只是監控你的IIS伺服器的可用工具之一。INetMonitor 是一個用來進行容量規劃、負載監控、硬體設定及模擬的工具。它是Microsoft BackOffice 資源工具箱(第二版)攜帶的,可以從Microsoft Press得到。有關INetMonitor的簡單介紹,可以在靈活易用的容量規劃工具INetMonitor一文中看到。