用WCAT進行IIS壓力測試

來源:互聯網
上載者:User
如何建立起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一文中看到。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.