使用 Web Application Stress 工具進行效能測試(转)

 

Duwamish Online

Aaron Ching、Pedro Silva 和 Allen Wagner
Microsoft Developer Network

2001 年一月

摘要:本文件探討效能測試對於成功部署 Web 應用程式的重要性,焦點集中於 Microsoft Web Application Stress (WAS),這是用來測試 Duwamish Online 應用程式效能的工具。

簡介

效能測試是成功部署 Web 應用程式不可或缺的要素。重要的是了解,當愈來愈多的使用者來參觀 Web 站台時,應用程式和 Web 伺服器 farm 會如何處置。

為了模擬 Web 應用程式的那種使用方式,您可能需要結合成千上百個實際使用者在指定的週期內來存取 Web 站台,或者使用可重現這種使用者負載的測試工具。

許多 Web 效能測試工具都可提供協助。基本上,這些工具可讓您使用最少個數的用戶端電腦來模擬大量的虛擬使用者,同時請求 Web 站台中預先定義的網頁或 URL (Uniform Resource Locators)。每一位虛擬使用者都會在 Web 瀏覽器和 Web 伺服器之間模擬正確的通訊協定。

在此文件中,將焦點集中於下列一項工具:可免費使用的 Microsoft® Web Application Stress (WAS) 工具。您可由 http://www.microsoft.com/technet/archive/itsolutions/intranet/downloads/webstres.mspx費下載 WAS。也可以從 Microsoft Windows® 2000 Resource Kit CD (WAS 版本 288) 取得 WAS。

WAS 的優點

首先,我們將討論使用 WAS 來測試應用程式效能的一些優點。

它是免費的

  • 如先前所提,Microsoft 的 Web Application Stress 工具與一些 Web 效能測試工具不同,您可從 WAS Web 站台免費下載這個工具。

  • 雖然此工具無法獲得正式支援,但是可以在此站台找到有用的資訊。可用的最佳資源是提供關於效能測試的多數常見問題的深入解答的知識庫。也可以將問題傳送給對等支援電子郵件別名 webtool@microsoft.com

它簡單易用

WAS 可讓您用許多種方法輕易產生測試指令碼:使用瀏覽器瀏覽站台、從 Web 伺服器記錄檔匯入 URL 或由 Web 內容目錄中選取檔案,就可以錄製指令碼。當然,也可以手動鍵入 URL 以建立新的測試指令碼。

它與一些其他工具不同,您可以使用由中央主用戶端所控制的任意個用戶端電腦來執行測試指令碼。每次開始進行測試時,主用戶端將執行下列工作:

  • 與所有其他用戶端通訊

  • 散發測試資料給全部用戶端

  • 同時在全部用戶端開始執行測試

  • 收集全部用戶端的測試結果和報表

在執行需要使用許多用戶端電腦使其輸送量最大化的大型 Web farm 的效能測試時,這個功能特別有用。

它具有高度可用性

WAS 設計用來模擬相容於超文字傳輸協定 (HTTP) 1.0 或 1.1 標準的任何標準 Web 伺服器的 Web 瀏覽器請求,不論該伺服器執行哪一種平台。

除了易於使用測試產生功能之外,WAS 還有許多其他有用的功能,其中包括:

  • 允許需要驗證的站台建立使用者帳號

  • 允許儲存每位使用者的 cookie 和 Active Server Pages (ASP) 工作階段資訊

  • 支援用於指定名稱值對的隨機或連續資料集

  • 支援頻寬節流和隨機延遲 (思考時間),以模擬更真實的分析案例

  • 支援 Secure Sockets Layer (SSL) 通訊協定

  • 允許群組 URL 和指定每個群組的點擊率

  • 提供可用 Microsoft Visual Basic® Scripting Edition (VBScript) 或以程式啟動、停止和設定測試指令碼的自訂程式來處理的物件模型。

WAS 的限制

除了優點之外,WAS 仍有一些限制。目前已知的錯誤和問題都列於 WAS Web 站台上。下列為目前 WAS 尚未支援的一些功能:

  • 根據先前的請求所傳回的結果來修改 URL 參數的功能

  • 執行或模擬用戶端邏輯的功能

  • 指定測試期間固定的測試週期數的功能

  • 使用不同 IP 位址或網域名稱同時執行多重 Web 伺服器測試的功能

    注意 您可以使用多重主用戶端同時測試多重 Web 伺服器。不過,若要整體關聯所有的測試結果,就需要合併多重 WAS 資料庫的資料。

  • 支援將網頁重新導向具有不同 IP 位址或網域名稱的另一個伺服器的功能

  • 直接從 Web 瀏覽器錄製 SSL 網頁的功能

    注意 WAS 已經支援測試 SSL 網頁,但並未加以錄製。在錄製完成指令碼之後,需要手動開啟每個指定 URL 的 SSL 支援。

雖然一些限制已有解決方法,但是如果應用程式視一個或多個這些功能而定,您可能無法完全利用 WAS 的優點。

目前,WAS 的開發工作已經專注於實作下一代 Web 應用程式效能測試工具 - Microsoft Application Center Test (ACT)。這個新工具的測試版本,最近已經發行當作 Visual Studio.NET 測試版的一部份,此版本的設計以改良的 UI 和其他功能來取代 WAS。

安裝 WAS

Web Application Stress 工具需要 Microsoft Windows NT® 4.0 Service Pack 4 或更新版本,包括 Windows 2000 平台。它還需要 Internet Explorer 4.0 或更新版本,最好使用 Internet Explorer 5.0。

若要安裝 Web Application Stress 工具,請下載最新版本的 setup.exe 程式。遵循安裝精靈的指示。複製和執行所有測試電腦上的 setup.exe。

注意 本文件中出現的程序以 WAS 版本 293 為根據。

建立測試指令碼

雖然可以手動建立測試指令碼,但 WAS 可藉由錄製瀏覽器活動、匯入 Web 伺服器記錄檔或評估 Web 內容目錄的內容獲得協助。在此文件中,將焦點集中於藉由錄製 Web 瀏覽器活動來建立測試指令碼。選擇這個方法有幾個原因,其中包括:

  • 這種錄製瀏覽器活動的方法會以高階正確性來擷取所有的使用者互動。從瀏覽器送至 Web 伺服器的任何 URL 參照、應用程式參數和 HTTP 標題資訊,都會自動錄製於新的測試指令碼中。

  • 匯入 Web 伺服器記錄檔的方法,最適用於已經有實際使用者流量的生產階段的站台。不過,新的 Web 站台可能還沒有足夠的實際使用者資料。甚且,可能必須合併記錄檔的大資料集,使其更能代表實際使用者活動。如此將需要建立大的測試指令碼,使用戶端電腦需要較大的系統資源。

  • 選取 Web 內容目錄的方法,最適用於大多為靜態 HTML 檔案的測試站台。這一方法可根據伺服器中現有的 Web 網頁來快速建立測試指令碼。不過,這一方法不會擷取多數應用程式檔案所產生的任何應用程式參數,例如通用閘道介面 (CGI) 程式或 Active Server Pages (ASP)。

您只需在主用戶端電腦建立和儲存測試指令碼。從主用戶端啟動測試時,此指令碼將自動散發至其他用戶端。

準備用戶端電腦

如果透過公司網路的 Proxy 伺服器使用 WAS,從公司網路之外的用戶端請求網頁,而且公司使用 Microsoft Proxy Server,請遵循下列步驟來設定用戶端:

  1. [開始] 功能表中,指向 [設定][控制台]!C連按兩下 [系統管理工具] 圖示,再連按兩下 [服務] 圖示。

  2. 連按兩下 [WebTool 服務] 以開啟 [內容] 對話方塊。

  3. 按一下 [登入] 標籤,然後按一下 [指定帳戶] 選項按鈕,以加入網路使用者名稱和密碼。請用 [網域/使用者名稱] 格式。

  4. 停止後重新啟動 [WebTool 服務]。

  5. 其次,安裝 Microsoft Windows Proxy client 2.0 軟體。這一軟體也稱為 Winsock Proxy 用戶端,您可在 Microsoft Proxy Server CD 中找到此軟體。(如需有關如何安裝和設定此軟體的詳細資訊,請參閱該 CD 所附的文件。)

  6. 對想要透過 proxy 伺服器使用的每個測試用戶端重複步驟 1-5。

如果貴公司使用其他 Proxy 伺服器,請尋找和安裝該特定 Proxy 伺服器所附的 Proxy 用戶端軟體。

準備瀏覽器

在開始錄製指令碼之前,必須清除瀏覽器快取區以準備 Web 瀏覽器。否則,WAS 可能無法錄製需要的瀏覽器活動,因為瀏覽器可能由其快取區擷取 Web 網頁,而不是從 Web 伺服器請求網頁。

關閉 Internet Explorer 的快取區

  1. [工具] 功能表中,按一下 [Internet 選項]

  2. 按一下 [一般] 標籤,再按一下 [刪除檔案]按鈕。

如果使用 Internet Explorer 5.0 或更新版本,就不必變更任何 Proxy 設定,因為其中包含可讓 WAS 程式化地修改其設定的新功能。不過,對於 Internet Explorer 4.0 或更舊版本,WAS 會使用內建的 Proxy 伺服器來錄製瀏覽器活動。

在 WAS 需要時指定 Proxy 設定

  1. [工具] 功能表中,按一下 [Internet 選項]

  2. [連線] 標籤中修改 Proxy 設定,使 Proxy 伺服器指向 [本機],使用的連接埠為 8000

  3. 清除 [近端網址不使用 Proxy 伺服器] 核取方塊。

錄製指令碼

在瀏覽器和用戶端已經可進行錄製之後,執行下列動作:

  1. 在首次啟動 WAS 程式時,您將看到 [Create new script] 對話方塊 (圖 1),要求指定建立新測試指令碼的方法。

    D5WAST01

    圖 1 建立指令碼

  2. 按一下 [Record] 按鈕。如果先前曾選取 [Don't display at startup] 核取方塊,則不會顯示 [Create new script] 對話方塊。而是要從 [Script] 功能表中選擇 [Record],然後選擇 [Create]

  3. [Browser Recorder-- Step 1 of 2] 對話方塊中,將要求指定一些錄製器的設定。在我們的狀況下,請清除所有的核取方塊,然後按一下 [Next] 以繼續進行。

  4. [Browser Recorder-- Step 2 of 2] 對話方塊中,按一下 [Finish]。此時將建立新的 Internet Explorer 視窗,以錄製瀏覽器活動,而 WAS 程式視窗將進入錄製模式。

  5. 在新 Internet Explorer 視窗的 [Address] 列中,鍵入目標站台的 Web 位址。在 WAS 程式視窗中,瀏覽站台時可即時看到 HTTP 標題資訊。

  6. 瀏覽站台之後,請切換回到 WAS 程式視窗 (仍然處於錄製模式),然後按一下 [Stop Recording] 按鈕。如此將停止錄製並建立新測試指令碼,如圖 Figure 2 所示。

    name="I1" marginwidth="1" marginheight="0" src="images/D5WAST02.GIF" frameborder="0" width="95%" height="416">
    如果您的瀏覽器不支援內嵌框架,請按一下這裡,在單獨的頁面檢視。

    Figure 2 完成錄製之後的 WAS 程式視窗

    在右窗格下方,將看到列出全部指令碼項目的資料表。

對於需要安全連線的 Web 站台,WAS 也可以測試啟用 Secure Sockets Layer (SSL) 的網頁。不過,它不允許 SSL 錄製。若要解決這一限制,可以關閉 Web 伺服器上的 SSL,錄製指令碼,然後重新啟用 Web 上的 SSL。

設定測試指令碼

新建立的測試指令碼還不能用來進行測試。必須先完成下列一個或多個設定工作:

  • 調整指令碼項目及其內容。

  • 調整測試指令碼設定。

  • 設定網頁群組和命中率百分比。

  • 設定使用者帳號。

  • 設定用戶端。

  • 設定效能計數器。

調整指令碼項目

在修改測試指令碼的項目時,還要考慮一些因素,將在下面進行討論。

移除不需要的指令碼項目

藉由移除重複的項目或具有無效 URL 的項目,以減少測試中的干擾因子。在調整特殊功能時,請移除參照影像、樣式表和其他輔助靜態檔的全部指令碼項目。

指定指令碼項目的思考時間

指令碼項目表最後一欄的標題為「延遲」。這一欄可讓您指定執行指令碼項目之前的固定延遲時間 (也稱為 思考時間)。

決定用於效能測試的正確思考時間,並沒有一定的標準。有些人可能在測試中使用零秒當作思考時間,而有些人則使用 30 秒當作思考時間。

這種選擇主要根據站台的內容和測試目的而定。例如,含有冗長網頁內容的 Web 站台使用的思考時間,可能比含有簡短網頁的簡單站台使用的思考時間還長,因為預期使用者要花更多時間來閱讀其內容。

另一方面,如果目的是要以最少的用戶端電腦來快速確定 Web 伺服器的最大輸送量,則可能使用零秒當作思考時間。若無思考時間,則 WAS 的每個執行緒都會以全速來產生 Web 伺服器的負載。

設定指令碼項目的數值清單

WAS 不在每個請求中使用相同的表單值,而是可讓您指派數值清單至指令碼項目的名稱-值對。這是建構真實測試分析案例的重要功能,在此分析案例中,不預期使用者一再以相同的表單值設定來呼叫同一網頁。

例如,測試指令碼中的一個項目呼叫 ASP 網頁,以顯示某產品項目的詳細資訊。我們設定 WAS 隨機從預先定義的產品 ID 清單中拾取不同的值,而不是每次使用相同的產品 ID 來呼叫網頁。

設定指令碼項目的數值清單

  1. 在 WAS 程式視窗的指令碼項目表中,連按兩下指定的指令碼項目的方形按鈕 (在資料表的第一欄中),以開啟該項目的詳細資訊畫面。

  2. [Querystring] 標籤 (也稱為 [Querystring Editor],如圖 3 所示) 中,選擇 [Format data to CGI standard] 核取方塊。關聯的名稱-值對將出現在核取方塊下方的資料表中。

    name="I2" marginwidth="1" marginheight="0" src="images/D5WAST03.GIF" frameborder="0" width="95%" height="416">
    如果您的瀏覽器不支援內嵌框架,請按一下這裡,在單獨的頁面檢視。

    圖 3 Querystring 編輯器的畫面

  3. 按一下指定的名稱-值對的數值欄位。此時將出現新的 [U] 按鈕。

  4. 按一下 [U] 按鈕,以開啟 [Field Values] 對話方塊。

  5. [Field Values] 對話方塊中輸入數值清單,每個值各據一行。也可以從試算表或資料檔剪下和貼上清單。

  6. 在 [Querystring Editor] 中,按一下資料表中相同名稱-值對的 [Distribution] 欄。從下拉式功能表中選擇 [隨機]

設定指令碼項目的 SSL

若要啟用特定指令碼項目的 SSL,請執行下列各項:

  1. 在 WAS 程式視窗的指令碼項目表中,連按兩下特定指令碼項目的方形按鈕 (在資料表的第一欄中),以開啟該項目的詳細資訊畫面。

  2. [SSL] 標籤中,選擇 [Use SSL] 核取方塊。(請注意,在啟用項目的 SSL 時,連接埠編號應該在 80 至 443 之間變化。)

調整指令碼設定

您必須修改測試指令碼的部份設定,才能滿意地執行效能測試。連按兩下左窗格中的指令碼名稱,以展開指令碼的資訊樹,您將找到標記為 [Settings] 的項目,可在其中指定測試指令碼的許多設定。按一下該項目將在右窗格中開啟 [Setting] 檢視,如圖 4 所示。

name="I3" marginwidth="1" marginheight="0" src="images/D5WAST04.GIF" frameborder="0" width="95%" height="497">
如果您的瀏覽器不支援內嵌框架,請按一下這裡,在單獨的頁面檢視。

圖 4 設定檢視畫面

指定目標 Web 伺服器

目標 Web 伺服器預設為「本機」,應該以目標 Web 伺服器的 IP 位址或網域名稱來取代。

變更這一設定

  1. 按一下左窗格中測試指令碼的名稱。

  2. 在右窗格上方的 [Server] 欄位中,輸入目標 Web 伺服器的 IP 位址或網域名稱。

注意 若要測試具有「網路負載平衡」的 Web 伺服器 Farm,請在此欄位輸入叢集 IP 位址,就像具有 Duwamish Online 的狀況一樣。

指定同時連線數目

在設定檢視的同時連線區段中,可以指定 Stress 程度 (執行緒數目)Stress 乘數 (通訊端子/執行緒) 的值,以控制套用至目標 Web 伺服器的負載/stress 程度。Stress 程度是在所有用戶端中建立的 Windows NT 執行緒的總數。每個執行緒可建立多重通訊端子,且每個通訊端子為同時請求。

下列公式說明這個關聯性:

總同時請求數 = Stress 程度 (執行緒數目) x Stress 乘數
(通訊端子/執行緒) = 總通訊端子個數

在效能標籤中,使用 Stress 程度 (執行緒數目) 的各種值來進行效能測試。例如,我們已經在連續測試中使用 100、200、300、400、500、750、1000、1500 和 2000 等各值,以研究 server farm 對漸增的負載層次的回應有多好。

您應該根據基本測試結果來調整這些個數。一般來說,您應該在較低的執行緒層次 (預期其系統輸送量隨遞增的執行緒個數而線性遞增) 收集更多資料點。另一方面,在高執行緒層次執行較少的測試,可以節省時間和工作,尤其在系統輸送量達到尖峰時。

請注意,第一個測試設定為在 1000 執行緒執行。這個目的是要執行足夠的請求,以建構應用程式所用的資料快取區。因為有或無快取區的應用程式效能可能大異其趣,如此將有助於維持負載測試時一致的系統環境。

指定測執行時間

在設定檢視的測試執行時間區段中,可以用日、時、分和秒來指定總執行時間。根據預期指令碼項目的延遲時間 (或回應時間),建議您至少執行測試指令碼數分鐘,以產生夠大的請求個數,以避免扭曲的測試結果。應用程式的延遲時間愈高,執行測試的時間愈長,才可獲取大量資料的取樣。

可以經常執行簡短的測試,以監視和調查站台的任何效能問題。此外,可以執行較長的測試 (例如長達 30 天),以查看站台效能是否隨時間而遞減,尤其當它承受中級或高級負載時。

在 Duwamish Online 中,多數的效能測試執行 7 至 10 分鐘,如此已足以獲得穩定的測試結果。

指定隨機延遲時間

在設定檢視的請求延遲時間區段中,可以選擇在執行各指令碼項目之前,加入隨機延遲時間 (或思考時間)。如果選取 [Use random delay] 核取方塊,則除了各指令碼項目指定的固定思考時間之外,每個 WAS 執行緒將閒置隨機時間週期 (介於 [Min][Max] 值之間)。

下列公式說明延遲時間計算:

每個項目的總延遲時間 = 隨機延遲時間 + 每個項目的固定延遲時間

在指定指令碼項目的固定延遲時間時,這個隨機延遲功能特別有用。若未使用隨機延遲時間,則所有執行緒都可能將其請求同時傳送至 Web 伺服器,然後在傳送下一個請求之前,等待大約相同的固定延遲時間。隨機延遲時間可在套用負載至 Web 伺服器時,協助均衡尖峰和離峰負載,因此可代表所需負載層次更精確的測試分析藍本。

指定暫停時間

在設定檢視的暫停區段中,可以用時、分和秒來指定 warmupcooldown 時間。Warmup 時間是未收集或計算效能資料至測試結果中所執行的初始測試的長度。同理,Cooldown 時間指定未收集資料的測試的結束週期。Warmup 和 Cooldown 時間可讓測試結果的扭曲最小化。

通常在執行新測試的初始階段,特定的單次活動會耗用較多的系統資源,例如元件或應用程式快取初始化。Warmup 時間有助於在收集任何資料之前穩定系統環境。

另一方面,當使用其他系統資源來停止測試和從全部用戶端開始收集資料時,Cooldown 時間有助於避免測試結束時扭曲的資料。甚且,通訊端子連線可能會永久終止,而造成大部份的通訊端子錯誤。

在 Duwamish Online 中,多數效能測試都使用 30 至 60 秒作為 Warmup 和 Cooldown 時間。

指定頻寬節流

在設定檢視的頻寬區段之下,WAS 可讓您模擬 14.4 Kbps 數據機連線至 T1 (1.5 Mbps) 區域網路 (LAN) 連線範圍內的各種網路頻寬。這個功能的最大優點是可以保持目標 Web 伺服器上較高的同時連線數目。這是許多 Web 站台 (具有使用較慢數據機連線的客戶) 所遭遇的一般現象。

啟用頻寬節流

  1. 從設定檢視的頻寬區段中,選擇 [Throttle bandwidth] 核取方塊。

  2. 從下拉式功能表中,選擇代表多數使用者連線輸送量的頻寬。

在 Duwamish Online 中,已經嘗試設定不同的頻寬節流。起初將使用者節流至 56 Kbps 連線,以了解在許多 Web 站台所經歷的狀況下應用程式如何執行。我們還嘗試將使用者節流至「雙頻道 ISDN」(128 Kbps),以模擬未來的頻寬趨勢,此時多數的目標使用者將使用較快的連線來存取站台。最後,以無頻寬節流方式來測試站台。有趣的是,我們發現這個設定產生的負載狀況與使用 128 Kbps 連線時相同。

不論頻寬節流如何設定,請讓想要比較測試結果的所有測試的頻寬節流設定都一致。

指定其他設定

在設定檢視的其他區段之下,保留其預設值,為一例外的是 HTTP 重新導向。藉由清除 [Follow HTTP redirects] 核取方塊以故意停用此功能。在建立指令碼程序期間,當重新導向的 URL 已經錄製至指令碼時,這是必要的動作。您不要在執行測試時重複兩次執行那些 URL。

設定網頁群組

在 WAS 中,可以將指令碼集組織成所謂的網頁群組。這個功能可讓您將全部網頁元件 (包括 HTML 檔案、圖形檔、樣式表等) 或多重相關網頁群組成單一邏輯單元。您可以為每個網頁群組指定不同的命中率百分比,因此可以控制各網頁或相關網頁的請求頻率。如果您有站台的使用量分析藍本 (如目錄瀏覽或購物車),則網頁群組可讓您依期望的站台命中率百分比來執行這些工作。

設定網頁群組

  1. 展開左窗格的指令碼名稱之下的資訊樹。

  2. 按一下 [網頁群組] 節點,在右窗格中開啟對應的檢視。

    您將找到在群組表中以百分之百散發所建立的「預設」網頁群組。所有的指令碼項目起初都預設指派至此群組。

  3. 在群組表的空白列中,在 [群組] 欄中鍵入新群組名稱 (例如可為首頁鍵入 "Home"),並在 [Distribution] 欄中鍵入數字。散發數字將用來計算網頁群組的命中率百分比,如 [Percent] 欄中所示。重複此步驟,將更多網頁群組加入資料表中。

  4. 按一下左窗格中的指令碼名稱,以切換至具有該指令碼項目的檢視。

  5. 在指令碼項目表的群組欄中,從下拉式功能表選擇一個網頁群組。對資料表中每個指令碼項目重複此步驟。所有相關網頁都應該指派相同的網頁群組。

    name="I4" marginwidth="1" marginheight="0" src="images/D5WAST05.GIF" frameborder="0" width="95%" height="323">
    如果您的瀏覽器不支援內嵌框架,請按一下這裡,在單獨的頁面檢視。

    圖 5 網頁群組定義的範例

  6. 按一下左窗格中的指令碼名稱,以切換至具有該指令碼項目的檢視。

  7. 在指令碼項目表的群組欄中,從下拉式功能表選擇一個網頁群組,如圖 6 所示。

    name="I5" marginwidth="1" marginheight="0" src="images/D5WAST06.GIF" frameborder="0" width="95%" height="526">
    如果您的瀏覽器不支援內嵌框架,請按一下這裡,在單獨的頁面檢視。

    圖 6 顯示群組選擇的指令碼項目檢視畫面

  8. 重複步驟 6 和 7,以選擇每個指令碼項目的網頁群組。所有相關項目 (例如 ASP 網頁、樣式表和圖形檔) 都應該指派相同的網頁群組。

建立和指派網頁群組至指令碼項目的另一個方法,是在錄製指令碼期間指定群組。若要使用此方法,請在跳至新網頁之前,從瀏覽器切換回 WAS 程式視窗 (請參閱圖 2)。按一下 [變更群組] 按鈕,然後在 [新增群組] 對話方塊中輸入群組名稱。此後錄製的任何指令碼項目都將指派至新群組名稱。

設定使用者

對於需要個人化和驗證的測試 Web 站台,WAS 提供稱為使用者的功能,可用來儲存使用者名稱、密碼和 cookie 資訊等多重記錄。

在開始測試時,所有使用者將由 stress-level 設定所指定的執行緒來區分。當發出請求時,各執行緒使用該執行緒配置的集區中新使用者的名稱、密碼和 cookie。如果 WAS 已經設定使用者比執行緒少,則有些執行緒將沒有使用者,驗證的網頁將失效,同時停用任何的 cookie 互動。因此,在測試個人化的 Web 站台時,讓使用者多於執行緒是非常重要的。

在 WAS 中建立的使用者個數並沒有任何限制。不過,因為每位使用者需要更多用戶端之間的記憶體和資源,如果使用超大的使用者清單,您的測試可能需要較久才能啟動和停止。

建立新使用者

  1. 展開左窗格中指令碼名稱之下的資訊樹。

  2. 按一下 [User] 節點,以在右窗格中開啟對應的檢視。

  3. 連按兩下 [Default] 使用者群組,以開啟 [Users] 檢視。

    請注意,預設已經建立 200 個使用者記錄。只要按一下使用者資料表中每個儲存格,即可根據應用程式的登錄帳戶 (若有的話) 來修改使用者密碼欄位。

您也可以執行下列各項以建立新的使用者集:

  1. 按一下 [全部移除] 按鈕,以清除現有的全部記錄。

  2. 新使用者個數欄位中,輸入想要建立的使用者個數。

  3. 使用者名稱首碼欄位中,鍵入要放在各使用者編號前面的數值,例如 "User"。

  4. 密碼欄位中鍵入密碼。這個相同的密碼將指派至全部使用者。

  5. 最後,按一下 [Create] 按鈕。使用者資料表將填入指定的使用者記錄的個數。

若要使用自訂的使用者名稱和密碼清單,可以從預先格式化的文字檔中匯入此清單。請參閱 WAS [說明] 檔案的〈匯入使用者名稱和密碼〉章節,以獲得這個功能的詳細資訊。

設定用戶端電腦

WAS 可讓您使用多重用戶端電腦對 Web 站台進行負載測試。開始進行測試時,WAS 將自動與所有已定義的用戶端通訊,傳送全部測試資訊 (包括指令碼項目、網頁群祖和使用者定義) 給它們,啟動和停止其中的測試,然後收集它們的測試結果。

使用其中一部電腦當作主用戶端。這個用戶端應該是已經用來錄製和設定測試指令碼的用戶端。

設定測試的用戶端

  1. 展開左窗格中指令碼名稱之下的資訊樹。

  2. 按一下 [Clients] 節點,以在右窗格中開啟對應的檢視。

  3. 連按兩下 [Default] 用戶端群組,以開啟 [Clients] 檢視。

    預設已經在用戶端資料表中建立本機 (您在工作的主用戶端) 的用戶端記錄。

  4. 若要將另一個用戶端加入用戶端資料表中,請將附加用戶端的 IP 位址或網域名稱輸入電腦名稱欄位中。

  5. 按一下 [Add] 按鈕,新用戶端就會加入資料表中,且其狀態為「已連線」。

  6. 重複步驟 5 和 6,直到全部用戶端電腦都加入資料表中。

在加入新用戶端時,請嘗試加入大略相等處理能力的電腦。我們發現加入明顯慢於其他用戶端的電腦,產生的通訊端子錯誤比沒有該部電腦時還多。顯然 WAS 在分散其測試負載時,並不會檢查電腦的能力。較舊的慢速電腦預期與較新的快速電腦負擔同樣的負載。

我們還發現設定專用的電腦作為主用戶端,但不負擔測試負載,此時會比較有利。在這種組態下,產生的通訊端子錯誤較少,且測試可更快停止。

若要如此設定,請從用戶端清單中移除主用戶端電腦名稱。如果有較慢的電腦可用,而且不要用於負載測試,則它可當作主用戶端,而不會影響測試的結果。不過,要瞭解主用戶端仍負責產生報表和散發測試指令碼。擁有較慢的主用戶端,表示測試會比較慢啟動,而且需要較長時間來產生報表。

設定效能計數器

WAS 可以整合於 Windows NT [效能監視器] 介面中,以簡化測試資料收集。您可以在各指令碼中儲存喜愛的 [效能監視器] 計數器,WAS 將收集其資料及它所收集的其他資訊。

將效能監視器計數器加入指令碼中

  1. 展開左窗格中指令碼名稱之下的資訊樹。

  2. 按一下 [Perf Counters] 節點,以在右窗格中開啟對應的檢視。

  3. 收集間隔欄位中,輸入收集間隔的數字。這是取樣之間的時間,以秒為單位。

  4. 按一下 [Add Counter] 按鈕。

  5. [Add counter to report] 對話方塊中,選擇想要收集的電腦、物件和計數器,選擇之後請按一下 [Add] 按鈕。

有關一般效能計數器的清單,請參閱 WAS [說明] 檔案的〈一般效能監視器計數器〉章節。

如果使用此功能時遇到問題,請參閱 WAS 知識庫。

執行測試指令碼

在安裝和設定測試指令碼之後,就可以在用戶端電腦上執行指令碼。

在主用戶端電腦開始執行測試

  1. 按一下目標指令碼名稱使它反白顯示。

  2. [Script] 功能表中選擇 [Run]

可能還要按一下工具列上的 [Play] 按鈕,才可以執行指令碼。

檢查測試報表

完成測試之後,應該先檢查任何通訊端子或 HTTP 錯誤的測試報表。

從報表檢查這些錯誤

  1. [View] 功能表中選擇 [Report],以在右窗格中開啟對應的檢視,如圖 7 所示。

    name="I6" marginwidth="1" marginheight="0" src="images/D5WAST07.GIF" frameborder="0" width="95%" height="510">
    如果您的瀏覽器不支援內嵌框架,請按一下這裡,在單獨的頁面檢視。

    圖 7 報表檢視畫面

  2. 必要時在左窗格中連按兩下指令碼名稱,以展開測試報表樹。

  3. 必要時按一下測試執行時指定的報表名稱。您可在右窗格中看到報表摘要。

    從報表摘要中,檢查通訊端錯誤區段之下的任何通訊端子相關錯誤 (其值不為零)。下列說明各種通訊端子錯誤類型:

    • 連線 - 任何用戶端無法連接 Web 伺服器的次數。如果這種錯誤的次數很多,請檢查用戶端和 Web 伺服器之間潛在的網路問題。從各用戶端 Ping 至 Web 伺服器的 IP 位址,或 Telnet 至 Web 伺服器的連接埠 80,以確認得到伺服器的正確回應。

    • 傳送 - 任何用戶端無法傳送資料至 Web 伺服器的次數。如果這種錯誤的次數很多,請檢查 Web 伺服器是否正確執行和運作。從用戶端開啟瀏覽器,然後手動按一下 Web 站台,以確認該站台一如預期地運作。

    • 接收 - 任何用戶端無法接收來自 Web 伺服器的資料的次數。如果這種錯誤的次數很多,請遵循傳送錯誤所用的相同程序來處理。還要檢查降低負載層級時錯誤是否減少。

    • 逾時 - 逾時後關閉的執行緒個數。如果這種錯誤的次數很多,請從用戶端開啟瀏覽器,然後手動按一下 Web 站台,以確認在只有一位使用者的狀況下,應用程式是否太慢。以不同的負載層級對站台進行完整的負載測試,然後研究應用程式的延遲特性。

  4. 如果通訊端子錯誤非常低或無此錯誤,請向下捲動至 [Summary Report] 檢視,找出結果代碼區段。

  5. 檢查結果代碼是否為 200,這表示 Web 伺服器已經順利傳回所有的請求。如果發現任何結果代碼大於或等於 400,請繼續進行下列步驟,以檢查產生那些 HTTP 錯誤的指令碼項目 (URL)。

  6. 展開左窗格中指令碼名稱之下的資訊樹。

  7. 連按兩下 [Page Data] 節點,以展開所有指令碼項目清單。

  8. 按一下各指令碼項目,以在右窗格中檢視網頁資料報表。

  9. 檢查各指令碼項目的網頁資料報表的結果代碼區段,確認其中是否產生 HTTP 錯誤。如需全部一般結果代碼清單,請參閱 WAS [說明] 檔案的〈HTTP 結果代碼〉 章節。

執行指令碼

依照上述備妥測試指令碼之後,已經可以執行測試和收集資料。

您可以遵循先前所述的步驟來手動執行每個測試。不過,這會是個相當耗時的程序。

WAS 提出一個物件模型,可讓您建立自己的 Microsoft Visual Basic Scripting Edition (VBScript) 指令碼,以控制和設定測試執行。進入 http://www.microsoft.com/technet/archive/itsolutions/intranet/downloads/webstres.mspx,其中可發現一些 VBScript 範例,可協助您更有效率地執行效能測試。例如,我們使用修改的 script7.txt 版本使負載測試程序自動化。

開始執行測試時,應該監視和記錄各種效能相關的系統計數器,包括追蹤系統輸送量、延遲 (回應時間) 和資源利用率的計數器。

結論最佳作法

用戶端電腦。 密切監視各用戶端的系統利用率。如果 CPU 或記憶體使用量超過百分之 80,用戶端就可能過載,此時應該考慮使用更多用戶端電腦來進行測試。賦予用戶端電腦壓力將造成不可靠的結果,並在連接 Web 伺服器時產生通訊端子錯誤。

設定乘數以 stress 伺服器。 評估在預先測試中將 Web 伺服器 farm 推向百分之百利用率所需的同時使用者請求的最大個數。

當伺服器 farm 需要加壓,但卻沒有足夠的測試用戶端電腦數,則可能需要較高的乘數。例如,如果發現使用 4,000 個乘數全部為 1 的 WAST 執行緒,仍然無法加壓伺服器,則可以使用乘數來加壓。不過,使用大於 1 的乘數無法正確反映 Web 應用程式網頁的正確 TTLB。可能的話,請在測試環境中加入更多的用戶端電腦,而不是依賴使用者乘數。

使用 SessionTrace。 使用 SessionTrace 來記錄 WAS 與 Web 伺服器之間詳細的通訊。在定義新的 WAS 指令碼時,重點是找出指令碼所用的所有 URL 是否都一如預期地運作,而且 Web 伺服器也傳回期望的回應。若非如此,您可能獲得 Web 伺服器只傳回錯誤回應時改善效能的結果。

應該將 SessionTrace 設定為 1,類型設定為 REG_DWORD。可在 Registry /HKEY_LOCAL_MACHINE /SOFTWARE /Microsoft /WAS 中開啟 SessionTrace。最後,在驗證新指令碼之後,記得關閉 (0) SessionTrace。否則,磁碟空間將迅速用完。

監視 Web 伺服器記錄檔 準備重新找出或清除 Web 伺服器記錄檔。它們會隨著效能測試增加而快速成長,尤其是長時間執行的測試。您也可以使用記錄檔來協助排除 WAS 所報告的應用程式錯誤問題。

限制指令碼項目和使用者的個數。 避免建立超過 1,000 個指令碼項目或使用者,除非基於特定原因需要更多這些物件。雖然可用的個數僅受限於用戶端電腦的記憶體數量,但您可能發現在使用大量指令碼項目或使用者時,啟動測試的時間會太長。

遵循 HTTP 重新導向選項。 如果指令碼已經錄製重新導向的 URL,請勿使用這一選項。如果使用這一選項,重新導向的網頁將會計算兩次。

%USERNAME% 和 %PASSWORD%。 WAS [說明] 檔案參照這些項目來填寫使用各 WAS 使用者指定的 USERNAME 和 PASSWORD 值的表單。在測試中,使用 %USERNAME% 和 %PASSWORD% 會大為增加關閉在多重用戶端散發的指令碼所需的時間。基於其他內部 WAS 使用者的建議,我們在各 WAS 測試的 QueryString 部份中指定 USER 和 PASSWORD 名稱-值對。藉由將 USER 和 PASSWORD 的存取方法設定為連續,保證密碼一定對應至正確的使用者。

除了這些限制,WAS 還是發行站台之前模擬使用者的絕佳工具。使用效能測試工具對於成功啟動應用程式是極為重要的。這些工具可讓您瞭解應用程式的效能特性,因此可以正確知道應用程式在高使用者負載下的執行狀況。在操作 Web 站台時的驚訝愈少,Web 站台的可靠度就愈好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值