Duwamish Online
Aaron Ching, Pedro Silva, and Allen Wagner
Microsoft Developer Network
January 2001
摘要:這篇文章討論了性能測試對于成功發(fā)布一個網(wǎng)絡(luò)應(yīng)用的重要性,集中討論了微軟的Web Application Stress (WAS)這個用于測試Duwamish Online的性能的工具。
內(nèi)容
介紹
使用WAS的好處
WAS的缺陷
安裝WAS
創(chuàng)建測試腳本
配置測試腳本
運行測試腳本
結(jié)論:最好的習(xí)慣
介紹
性能測試是成功發(fā)布一個網(wǎng)絡(luò)應(yīng)用的關(guān)鍵因素。當(dāng)越來越多的用戶訪問你的站點時,清楚地知道你的應(yīng)用程序和你的服務(wù)器群是怎樣工作的就顯得非常重要了。
為了給你的網(wǎng)絡(luò)應(yīng)用程序模擬出那種類型的使用,你可以協(xié)同幾百甚至上千的真實用戶在一段設(shè)計好的時間段里訪問你的站點,你也可以只與一個能復(fù)制這么多用戶負載的測試工具一起工作,
許多性能測試工具可以幫你的忙?;旧?,這些工具都允許你以有限的客戶端模擬大量的虛擬用戶,并發(fā)地訪問預(yù)先確定的頁面或網(wǎng)站的URLs (Uniform Resource Locators)。每一個虛擬用戶都能精確地仿效在真實瀏覽器和網(wǎng)站服務(wù)器之間進行通訊協(xié)議。
在這篇文章里,我們將專注于其中一個這樣的工具:Microsoft® Web Application Stress (WAS)工具。你可以在微軟的Microsoft Windows® 2000 Resource Kit CD (WAS version 288)里面找到這個工具。
注意 WAS不能再從Microsoft的網(wǎng)站下載了,Visual Studio .NET 的企業(yè)架構(gòu) 和 企業(yè)開發(fā)版本都包含一個新的網(wǎng)絡(luò)壓力測試工具,這個工具叫做Application Center Test,是受Microsoft技術(shù)支持的工具。這個工具包含在Visual Studio .NET安裝時的Enterprise Development Tools部分。在寫這篇文章時,Application Center Test還沒有正式公開發(fā)表。關(guān)于如何得到Visual Studio .NET,請訪問Visual Studio網(wǎng)站。
使用WAS的好處
首先,我們來討論一下使用WAS測試你的應(yīng)用程序的好處。
它簡單
WAS允許你以不同的方式創(chuàng)建測試腳本:你可以通過使用瀏覽器走一遍站點來錄制腳本,可以從服務(wù)器的日志文件導(dǎo)入URL,或者從一個網(wǎng)絡(luò)內(nèi)容文件夾選擇一個文件。當(dāng)然,你也可以手工地輸入URL來創(chuàng)建一個新的測試腳本。
不像其它的工具,你可以使用任何數(shù)量的客戶端運行測試腳本,全部都有一個中央主客戶端來控制。在每一個測試開始前,主客戶機透明地執(zhí)行以下任務(wù):
· 與其他所有的客戶機通訊
· 把測試數(shù)據(jù)分發(fā)給所有的客戶端
· 在所有客戶端同時初始化測試
· 從所有的客戶端收集測試結(jié)果和報告
這個特性非常重要,尤其對于要測試一個需要使用很多客戶端的服務(wù)器群的最大吞吐量時非常有用。
它的高可用性
WAS是被設(shè)計用于模擬Web瀏覽器發(fā)送請求到任何采用了HTTP1.0或1.1標準的服務(wù)器,而不考慮服務(wù)器運行的平臺。
除了它的易用性外,WAS還有很多其它的有用的特性,包括:
· 對于需要署名登錄的網(wǎng)站,它允許創(chuàng)建用戶賬號。
· 允許為每個用戶存儲cookies 和Active Server Pages (ASP) 的session信息
· 支持隨機的或順序的數(shù)據(jù)集,以用在特定的名字-值對
· 支持帶寬調(diào)節(jié)和隨機延遲(“思考的時間”)以更真實地模擬顯示情形。
· 支持Secure Sockets Layer (SSL)協(xié)議
· 允許URL分組和對每組的點擊率的說明
· 提供一個對象模型,可以通過Microsoft Visual Basic® Scripting Edition (VBScript)處理或者通過定制編程來達到開啟,結(jié)束和配置測試腳本的效果。
WSA的缺陷
除了優(yōu)勢外,WAS的確有一些缺陷存在。當(dāng)前知道的bug和有關(guān)事項都列在WAS的網(wǎng)站上了。以下是當(dāng)前WAS不支持的特性:
· 以前面所發(fā)請求返回的結(jié)果為基礎(chǔ),修改URL參數(shù)的能力。
· 運行或模仿客戶端邏輯的能力
· 為所分配的測試指定一個確定數(shù)量的測試周期的能力。
· 對擁有不同IP地址或域名的多個服務(wù)器的同時測試能力
注意 你可以使用多個主客戶端來同時測試多個服務(wù)器。然而,如果你想把所有測試結(jié)果聯(lián)系起來成為一個整體,則需要整理從各個WAS數(shù)據(jù)庫得到的數(shù)據(jù)
· 支持頁面在不同IP地址或域名間的重定向的能力
· 從Web瀏覽器直接記錄SSL頁面的能力
注意 WSA已經(jīng)支持SSL頁面的測試,但是沒有記錄它們。你需要在腳本錄制完后,手工地為每個設(shè)計好的URL打開SSL支持
雖然對這些限制有一些相應(yīng)的解決辦法,但是如果你的應(yīng)用依賴一個或多個這樣的功能的話,你也許不能完全享受WAS帶來的好處。
安裝WAS
WAS要求Microsoft Windows NT® 4.0 Service Pack 4或以上版本,包括Windows 2000平臺。還要求Internet Explorer 4.0以上版本,與Internet Explorer 5.0工作更好。
要安裝WAS,首先下載最新版本的setup.exe程序,按照安裝向?qū)У闹甘???截惒⒃谀愕臏y試機器上安裝。
注意 在本文介紹的所有步驟均以WAS version 293為藍本。
創(chuàng)建測試腳本
雖然你可以手動地創(chuàng)建測試腳本,WAS可以通過記錄瀏覽器活動,導(dǎo)入服務(wù)器日志文件或評估Web文件夾的內(nèi)容來幫助你創(chuàng)建測試腳本。在本文,我們將主要通過記錄覽器活動的方式來創(chuàng)建測試腳本。采用這個方法而不用其它的方法有幾個原因,包括:
· 記錄覽器活動的方式以精確的方式捕捉所有用戶的交互活動。任何從瀏覽器發(fā)往服務(wù)器的URL指向,應(yīng)用程序參數(shù)和HTTP頭部信息都會被自動地記錄在新的測試腳本里。
· 導(dǎo)入服務(wù)器日志文件的方法在站點已經(jīng)進入投入使用階段,有了真實的用戶流量的情況下使用最好。但是,一個新的站點未必有這么多的真實用戶使用數(shù)據(jù),進一步說,可能還需要合并大量的日志文件來達到較好地體現(xiàn)用戶活動的目的,這將需要創(chuàng)建大量的測試腳本,將需要客戶端更多的系統(tǒng)資源。
· 選取Web內(nèi)容文件夾的方法最好用在測試多數(shù)是靜態(tài)HTML文件的站點。這種方法允許在已有服務(wù)器的Web頁面的基礎(chǔ)上快速創(chuàng)建測試腳本。然而,這種方法并不捕捉任何由大多數(shù)應(yīng)用程序文件產(chǎn)生的參數(shù),像Common Gateway Interface (CGI)程序或Active Server Pages (ASP).
你只需要在主客戶機器創(chuàng)建和存儲你的測試腳本,當(dāng)測試由主客戶端初始化時,測試腳本會自動地分發(fā)到其他的測試客戶端。
準備測試客戶端機器
如果你正在你的內(nèi)部網(wǎng)通過代理服務(wù)器使用WAS ,并且從內(nèi)部網(wǎng)外的客戶端發(fā)送請求頁面,而且你的公司使用Microsoft Proxy Server,那么按照以下的步驟建立你的客戶端:
1. 從開始菜單,指向設(shè)置\控制面板。雙擊管理工具圖標,然后是服務(wù)圖標。
2. 雙擊WebTool服務(wù)打開屬性對話框
3. 點Log On As標簽,然后點This account選擇按鈕添加你的網(wǎng)絡(luò)用戶名和密碼。使用domain\user name的格式
4. 停止并重起WebTool服務(wù)
5. 然后,安裝Microsoft Windows Proxy client 2.0,也叫Winsock Proxy 客戶端,可以在Microsoft Proxy Server CD里找到(更多有關(guān)怎樣安裝和設(shè)置這個軟件的信息,請參考包含在CD里面的文檔)
6. 對于希望使用代理服務(wù)器的每個測試客戶端,重復(fù)步驟1-5。
如果你的公司使用其他的代理服務(wù)器,就要安裝該代理服務(wù)器的代理客戶端。
準備瀏覽器
在開始錄制一個腳本前,你需要準備好你的瀏覽器,清除你的瀏覽器的緩沖cache。否則,WAS也許不能記錄所需的瀏覽器活動,因為瀏覽器可能從緩沖區(qū)而不是從所請求的服務(wù)器取得請求頁面。
關(guān)掉IE的緩沖區(qū)
1. 在工具菜單,點Internet選項
2. 點常規(guī)標簽,然后點刪除文件。。。按鈕。
如果使用IE5。0或以上版本則不需要修改代理設(shè)置,因為5。0以上版本的IE允許WAS改變這些設(shè)置。然而,對于IE4。0或早期版本,WAS使用一個內(nèi)置的代理服務(wù)器來記錄瀏覽器活動。
按WAS的需要指定代理設(shè)置
1. 在工具菜單,點Internet選項
2. 在連接標簽里,修改代理設(shè)置以使代理服務(wù)器指向Localhost并且使用端口8000
3. 不選對于本地地址不使用代理服務(wù)器
記錄腳本
在你的瀏覽器和客戶端已經(jīng)準備好記錄后,做下面的操作:
1. 當(dāng)你第一次運行WAS時,你會看到一個Create new script的對話框(Figure 1),詢問你以什么樣的方式創(chuàng)建一個新的測試腳本。
2. 點Record 按鈕 。如果之前你選擇了Don't display at startup,Create new script將不會顯示出來。你可以在Script菜單選擇Record 然后 Create.
3. 在Browser Recorder — Step 1 of 2對話框,你會被要求指定一些記錄設(shè)置。在這里,清除所有的選擇框點Next繼續(xù)。
4. 在Browser Recorder — Step 2 of 2對話框,點Finish。一個新的IE窗口會出現(xiàn)以便記錄瀏覽器活動,同時WAS會被置于記錄模式。
5. 在新出現(xiàn)的IE窗口的地址欄,輸入你的目的站點的地址。在WAS的窗口你將看到HTTP 信息在跟隨你的瀏覽活動而實時改變著。
6. 當(dāng)完成了你的站點瀏覽后,轉(zhuǎn)回WAS窗口—還處于記錄狀態(tài)—點Stop Recording按鈕。就會終止記錄并產(chǎn)生一個新的測試腳本。
在右邊窗口的底部,你將看到一個列出所有腳本的列表。
對于需要安全連接的站點,WAS支持SSL頁面。然而不允許SSL的記錄。要解決這些限制,你可以在服務(wù)器端關(guān)掉SSL,記錄腳本,然后再重新激活服務(wù)器上的SSL。
設(shè)置測試腳本
新錄制的腳本還不能立即用來測試。還必須完成以下設(shè)置:
· 調(diào)節(jié)腳本項和他們的屬性
· 調(diào)節(jié)測試腳本的測試
· 建立頁面組和點擊百份比
· 建立用戶賬號
· 建立客戶端
· 建立性能計數(shù)器
調(diào)節(jié)腳本項
在修改一個測試腳本的腳本項時需要考慮幾點,我們將在下面介紹。
去掉不需要的腳本項
去掉冗余項以減少在測試中的噪聲因素,或者去掉那些無效的URL。當(dāng)要調(diào)整一項特殊的功能時,去掉所有指向圖象,樣式表單和其他輔助靜態(tài)文件的腳本項。
為腳本項指定思考時間
腳本項表單的最后一項叫做“延遲”。這項允許你在執(zhí)行腳本項之前指定特定的延遲時間(也叫思考時間)。
對于性能測試來說,如何定義思考時間并沒有一個單獨的標準。有些人使用零思考時間,有些人考慮使用30秒為思考時間。
主要取決于站點的內(nèi)容和測試的目的。例如,有長頁面內(nèi)容的站點需要比簡單頁面的站點使用長一點的時間,因為用戶需要使用多點的時間來讀頁面內(nèi)容。
另外,如果你的目的是快速地決定一個只有少量客戶端的Web服務(wù)器的吞吐量,你可以考慮零思考時間。沒有思考時間的話,WAS的每個線程以最快速度對Web服務(wù)器施加壓力。
為腳本項設(shè)置一系列的值
WAS允許你為一個腳本項的一對名字-值賦值,而不是對每一個請求都使用相同的值。這個特性對于模擬真實情形很重要,沒有用戶會不停的以相同的數(shù)據(jù)值請求同一頁面吧?
例如,其中一項測試腳本是請求一個ASP頁面展示一個產(chǎn)品的詳細信息。我們可以設(shè)置WAS隨機地從一列預(yù)先定義的產(chǎn)品ID選取不同的值,而不是每次都用相同的產(chǎn)品ID請求ASP頁面。
為腳本項建立一列值
1. 在WAS窗口的腳本項,雙擊腳本項最前面的方型按鈕(在表單的第一列)打開這項的詳細菜單。
2. 在Querystring標簽里(也叫Querystring Editor,如Figure 3所示),選定Format data to CGI standard。相應(yīng)的名字-值對會出現(xiàn)在check box下的表單里。
3. 點選定的名字-值對的值,一個新的按鈕會出現(xiàn)
4. 點這個按鈕打開Field Values對話框
5. 在Field values對話框輸入一串值,每一行一個值。你也可以通過剪切,粘貼一個電子表格的數(shù)據(jù)文件來輸入。
6. 在Querystring Editor里,在表單中點有相同名字-值對的Distribution一列。在下拉菜單選擇Random。
為腳本項設(shè)置SSL
為特定的腳本項激活SSL,需要作以下操作:
1. 在WAS窗口的腳本項,雙擊腳本項最前面的方型按鈕(在表單的第一列)打開這項的詳細菜單。
2. 在 SSL標簽里,選Use SSL. (注意在你激活SSL時確保端口值應(yīng)該在80到 443之間)。
調(diào)整腳本設(shè)置
為了您能滿意地運行你的性能測試,你需要修改你的測試腳本的設(shè)置。通過雙擊左邊的腳本名展開腳本的信息,你會找到一個Settings標簽,在這里你可以為你的測試腳本指定很多設(shè)置。點擊它將在右邊窗口打開Settings視圖。
指定目標Web服務(wù)器
默認地,目標服務(wù)器是“localhost”,應(yīng)該替換為IP地址或目標服務(wù)器的域名。
改變設(shè)置
1. 在左邊的窗口點測試腳本的名字
2. 在右邊窗口頂部的Server輸入目標服務(wù)器的IP地址或域名
注意 如果你想對有Network Load Balancing(網(wǎng)絡(luò)負載均衡)的服務(wù)器群組進行測試,就像Duwamish Online一樣,則需要輸入IP地址群。
設(shè)置并發(fā)連接數(shù)
在設(shè)置里的Concurrent Connections部分,你可以指定Stress level (threads)的值和Stress multiplier (sockets per thread)來控制對目標服務(wù)器的壓力/負載程度。Stress level是全部客戶端所產(chǎn)生的Windows NT線程的總數(shù)。每個線程能產(chǎn)生多個socket而每個socket就是一個并發(fā)的請求。
以下公式解釋了他們之間的關(guān)系:
Total Concurrent Requests = Stress level (threads) x Stress multiplier
(sockets per thread) = Total Number Sockets
在我們的實驗室,我們使用不同的Stress層次來 性能測試。例如,我們使用過100, 200, 300, 400, 500, 750, 1000, 1500,和2000的值來連續(xù)測試以研究我們的服務(wù)器群組是如何對連續(xù)增長的負載作出反應(yīng)的。
你應(yīng)該在初步測試的結(jié)果基礎(chǔ)上調(diào)整這些數(shù)值。通常來說,你需要在低負載度時收集更多的數(shù)據(jù)點,因為這時候系統(tǒng)的吞吐量會隨線程的增長而線性增長。另一方面,你可以在高負載度時運行較少的測試以節(jié)省時間和精力,尤其是系統(tǒng)吞吐量已經(jīng)高于峰值時。
注意我們的第一次測試將設(shè)定在1000個線程。目的是運行足夠的請求以建立我們程序的數(shù)據(jù)緩沖。因為程序的性能會因為有沒有緩沖而表現(xiàn)大不相同,這將幫助我們?yōu)樨撦d測試保持一個一致的環(huán)境。
設(shè)定測試運行時間
在設(shè)置視圖的Test Run Time部分,你可以以日,小時,分鐘,秒來設(shè)定總的運行時間。取決于你的腳本項的預(yù)期反應(yīng)時間,建議你運行測試腳本至少若干分鐘以便產(chǎn)生足夠的請求,避免變形的測試結(jié)果。你的程序的反應(yīng)時間越高,測試進行的時間就應(yīng)該越長,以便產(chǎn)生大量的數(shù)據(jù)。
你可以運行短而密集的測試以便監(jiān)測你的站點的任何問題。另外,你需要運行更長的測試時間(例如,30天),看看你的站點的性能是否隨時間而退化,尤其是在中級或高級的負載壓力下。
在Duwamish Online這個站點,大多數(shù)的性能測試都運行7到10分鐘,以便有足夠時間來穩(wěn)定測試結(jié)果。
設(shè)置隨機延遲時間
在設(shè)置視圖的Request Delay部分,你可以在執(zhí)行測試前為每個腳本項選擇加入隨機延遲時間(或思考時間)。如果Use random delay選項框被選中,每個WAS線程會空轉(zhuǎn)一段隨機的時間(在最大值和最小值之間)加上為每個腳本項指定的固定的思考時間。
下面的公式解釋了延遲時間的計算方法:
每項的延遲時間=隨機延遲時間+每項的固定延遲時間
隨機延遲時間的特性在固定延遲時間被指定給腳本項時尤為重要。如果沒有使用隨機延遲時間,所有的線程會在幾乎相同的時間發(fā)送請求到Web服務(wù)器,然后等待幾乎相同的固定延遲時間然后發(fā)送下一個請求。隨機延遲時間在向Web服務(wù)器施加負載時有助于壓平峰值和谷值,因此為所需的負載水平呈現(xiàn)一個更為精確的環(huán)境。
設(shè)定掛起時間
在設(shè)置視圖的Suspend部分,你可以以日,小時,分鐘,秒來設(shè)定warmup 和cooldown時間。Warmup時間就是初始化測試運行時間,在這段時間里不會收集和計算性能數(shù)據(jù)。類似地,cooldown時間就是指定結(jié)束階段的測試時間,也不收集數(shù)據(jù)。Warmup 和 cooldown被用于最小化測試結(jié)果的失真。
通常,在一個新測試運行的初始化階段,很多系統(tǒng)資源是被特定的活動所消耗,像組件或應(yīng)用程序的緩沖初始化。Warmup時間有助于在任何測試數(shù)據(jù)被收集之前穩(wěn)定系統(tǒng)的環(huán)境。
另一方面,cooldown時間有助于在測試運行的結(jié)束階段避免數(shù)據(jù)的變形,這時額外的系統(tǒng)資源被用于停止測試和開始從客戶端收集數(shù)據(jù)。另外,socket連接可能會過早地停止,造成大量的socket錯誤。
在Duwamish Online,我們使用30 到 60秒作為大多數(shù)性能測試的warmup 和 cooldown時間
指定帶寬瓶頸
在設(shè)置視圖里的Bandwidth部分,WAS允許你模擬從14.4 Kbps的modem連接到T1 (1.5 Mbps)的Local Area Network (LAN)連接的網(wǎng)絡(luò)帶寬。這個特性的最大好處是可以支撐大量的并發(fā)連接到目標服務(wù)器。這是大多數(shù)Web站點(用戶使用低速modem連接)所體驗的情形。
激活帶寬瓶頸
1. 在設(shè)置視圖里的Bandwidth部分,選擇Throttle bandwidth選項框。
2. 在下拉菜單,選擇一個代表大多數(shù)用戶的連接吞吐量的帶寬。
在Duwamish Online里,我們試過不同的帶寬瓶頸的設(shè)置。初始化時。我們把用戶連接設(shè)在56 Kbps,想明白我們的程序在大多數(shù)Web站點的情況下是如何表現(xiàn)的。我們也試過把用戶連接設(shè)在ISDN Dual Channel (128 Kbps)以模擬未來寬帶趨勢下,我們的大多數(shù)用戶通過快速的連接訪問我們的站點。最后,我們以沒有帶寬瓶頸的情形測試我們的站點。有趣的是,我們發(fā)現(xiàn)這種設(shè)置產(chǎn)生的負載條件與用128 Kbps連接的一樣。
不管你如何設(shè)置帶寬瓶頸,務(wù)必要在你想比較測試結(jié)果的所有測試中保持一致性。
指定其他設(shè)置
在設(shè)置視圖的其他部分,我們保持默認值,除HTTP重定向外。我們故意去掉Follow HTTP redirects選項。這在創(chuàng)建腳本過程中你錄制腳本時已經(jīng)錄制了URL的重定向的時候是必須的。你不需要重復(fù)兩次地運行那些URL。
設(shè)置頁面組
在WAS里,你可以把一系列的腳本項組織成所謂的頁面組。這個特性允許你把所有的頁面元素(包括HTML文件,圖象文件,樣式表單等)或多個相連的頁面組織成一個邏輯單元。你可以為每個頁面組指定不同的點擊率,那樣就能控制哪個頁面或相連的頁面會訪問更多或更少。如果你有你的網(wǎng)站的使用方法—像目錄瀏覽或購物車—頁面組允許你以你希望你的站點會獲得的點擊率來運行。
建立頁面組
1. 展開左邊窗口的腳本的信息
2. 點Page Groups節(jié)點在右邊窗口打開相應(yīng)的視圖
你會看到默認的以100%分布率的頁面組已經(jīng)創(chuàng)建好了。所有的腳本項默認都初始化為這個組。
3. 在組表單的空白行,在Group列輸入新的組名(像"Home"作為主頁),在Distribution列輸入數(shù)值。分布率會被用于計算這個頁面組的點擊率,見Percent列。重復(fù)這個步驟添加更多的頁面組。
4. 點左邊窗口的腳本名回到該腳本項的視圖
5. 在腳本項表單的Group列,從下拉菜單選擇其中一個頁面組。為每個腳本項重復(fù)這個步驟。所有關(guān)聯(lián)的頁面都應(yīng)該選同樣的頁面組。
Figure 5. Example of page groups definition
6. 點左邊窗口的腳本名回到該腳本項的視圖
7. 在腳本項的表單的Group一列,從下拉菜單選則其中一個頁面組。
8. 重復(fù)6到7為每一個腳本項選擇一個頁面組。所有相關(guān)項(像ASP 頁面,樣式表單和圖象文件)應(yīng)該選擇相同的頁面組。
另一種創(chuàng)建和指定頁面組的方法是在錄制腳本時指定頁面組。要使用這種方法,在瀏覽器跳到新的頁面之前返回到WAS窗口(見Figure 2)。點Change Group按鈕然后在New Group對話框輸入組名。以后錄制的腳本項都會被指定到這個新的組。
指定用戶
測試需要署名登錄的Web站點時,WAS提供一個特性叫做Users,可用于存儲多個用戶的用戶名,密碼和cookie信息。
當(dāng)一個測試開始時,所有的用戶被分配到給定壓力系數(shù)設(shè)置的各線程中。當(dāng)請求開始時,每個線程使用從與該線程連接的共享池中獲得的用戶名,密碼,和cookie。如果WAS配置的用戶數(shù)比線程少,一些線程就會沒有用戶—所有的署名登錄頁面會登錄取失敗,任何與cookies的交互會被禁止。所以,當(dāng)測試需要個人認證的網(wǎng)站時,擁有的用戶數(shù)比線程多是很重要的。
對于可以在WAS中創(chuàng)建的用戶數(shù)沒有硬性的規(guī)定和限制。然而,因為每個用戶都會需要一定的內(nèi)存和資源,所以如果使用大量的用戶,將會使你的測試啟動和停止時間更長些。
創(chuàng)建新用戶
1. 在左邊窗口展開腳本的信息
2. 點Users節(jié)點在右邊窗口打開相應(yīng)的視圖
3. 雙擊Default用戶組打開用戶視圖。
注意默認已經(jīng)創(chuàng)建了200個用戶。你可以簡單地修改用戶名和密碼就行了。
你也可以做以下操作來創(chuàng)建一系列新的用戶
1. 點Remove All清除所有的記錄
2. 在Number of new users,輸入你想創(chuàng)建的新用戶的數(shù)量
3. 在User name prefix,你可以在用戶編號的前面輸入前綴值,例如“User.”
4. 在Password,輸入密碼。相同的密碼會賦給所有用戶。
5. 最后,點Create按鈕。用戶表單就會填滿指定數(shù)量的用戶
如果你想使用定制的用戶名和密碼列表,你可以從一個預(yù)定格式的文本文件導(dǎo)入它們。參考WAS幫助文件的“Importing user names and passwords”部分。
建立各客戶端機器
WAS允許你使用多個客戶端機器測試你的網(wǎng)站。當(dāng)一個測試開始時,WAS會自動地與所有客戶機取得聯(lián)系,向他們傳輸所有的測試信息(包括測試腳本項,頁面組和用戶定義信息),啟動和停止他們的測試,然后收集測試結(jié)果。
使用其中一個客戶機器作為你的主客戶端。這個主客戶端應(yīng)該是你用來記錄和設(shè)置測試腳本的機器。
建立測試客戶端
1. 在左邊窗口展開腳本信息
2. 點Clients節(jié)點在右邊窗口打開相應(yīng)的視圖
3. 雙擊Default客戶端打開客戶端視圖
本地客戶端的記錄(在你工作的主客戶端)已經(jīng)默認被創(chuàng)建。
4. 要想加入新的客戶端,在Machine name輸入IP地址或域名。
5. 點Add按鈕,新的客戶端會以Connected的狀態(tài)被加到表單中去。
6. 重復(fù)步驟5和6,直到全部客戶端機器都被加入。
當(dāng)添加新的客戶端時,盡量加那些大致相同處理能力的機器。我們發(fā)現(xiàn)添加一個明顯比其他機器速度慢的機器比不添加它還要產(chǎn)生更多的socket錯誤。
我們也發(fā)現(xiàn)如果我們設(shè)置一臺專注的機器作為主客戶端,但是這臺機器不參與產(chǎn)生負載。這樣的設(shè)置,我們會產(chǎn)生較少的socket錯誤,而且測試結(jié)束得更快。
要這樣設(shè)置的話,從客戶端列表去掉主客戶端的名字。如果你有一臺慢的機器而你不打算用做負載產(chǎn)生機器,它可以作為你的主客戶端而不會影響測試的輸出。注意,這臺主客戶端仍然做所有的產(chǎn)生報告和分發(fā)測試腳本的工作。一臺慢速度的主客戶端意味著你的測試啟動和結(jié)束的速度會慢些,而且要更多的時間來產(chǎn)生報告。
設(shè)置性能計數(shù)器
WAS可以與Windows NT性能監(jiān)視器結(jié)合簡化測試數(shù)據(jù)的收集。你可以為每個腳本存儲你最喜歡的性能監(jiān)視計數(shù)器,WAS 會像其它信息一樣收集它們的數(shù)據(jù)。
把性能監(jiān)視計數(shù)器加到你的腳本
1. 在左邊的窗口展開腳本的信息
2. 在右邊的窗口點Perf Counters節(jié)點打開相應(yīng)的視圖
3. 在Collection Interval,輸入收集時間間隔。這是以秒計算的取樣時間。
4. 點Add Counter按鈕
5. 從Add counter to report對話框,通過點Add按鈕選機器,對象和你感興趣收集的計數(shù)器。
在WAS幫助文件的"Common performance monitor counters"部分有一系列的通用性能計數(shù)器的介紹。
如果你在使用這個特性時遇到什么問題,請參考WAS的基本知識介紹。
運行測試腳本
一旦你設(shè)置好了測試腳本,就準備好了在你的客戶機運行腳本
啟動主客戶端的測試
1. 點需要測試的腳本
2. 從Scripts菜單選Run
也可以點工具欄上的Play按鈕運行腳本。
檢查測試報告
測試完成后,你應(yīng)該先檢查測試報告看是否有socket 或 HTTP錯誤
從報告中檢查這些錯誤
1. 從View菜單選Reports打開相應(yīng)的視圖,見Figure 7.
2. 在左邊窗口,雙擊腳本打開測試報告,如果需要的話
3. 點測試報告名(有測試運行時間指定),如果需要的話。你會看到右邊窗口顯示報告的概要。
4. 在報告概要,檢查Socket Errors部分是否有任何的socket有關(guān)的錯誤(值不為0)。這里列出每種socket錯誤的解釋:
· Connect—客戶端不能與服務(wù)器取得連接的次數(shù)。如果這個值偏高,檢查在客戶端與服務(wù)器之間產(chǎn)生的任何潛在的錯誤。從每個客戶端Ping服務(wù)器或telnet服務(wù)器的端口80驗證你得到正確的回應(yīng)。
· Send—客戶端不能正確發(fā)送數(shù)據(jù)到服務(wù)器的次數(shù)。如果這個值偏高,檢查服務(wù)器是否正確地工作著。在客戶端打開一個瀏覽器然后手工點擊站點頁面驗證站點正確地工作著。
· Recv—客戶端不能正確從服務(wù)器接收數(shù)據(jù)的次數(shù)。如果這個值偏高,執(zhí)行和Send錯誤相同的操作。還要檢查一下如果你減低負載系數(shù),錯誤是否跟著減少。
· Timeouts—超時的線程的數(shù)目,而且隨后就關(guān)閉了。如果這個值偏高,在客戶端打開一個瀏覽器然后手工點擊站點頁面驗證是否即使只有一個用戶你的程序也會很慢。再做一個不同負載系數(shù)的壓力測試,看看你的程序的潛在特征。
5. 如果socket錯誤很低或為0,拉下報告視圖找到Result Codes部分。
6. 檢查一下是否所有結(jié)果代碼都是200,表示所有請求都被服務(wù)器成功地返回了。如果找到大于或等于400的結(jié)果,繼續(xù)下面的步驟以查找哪個腳本項(URL)產(chǎn)生這些HTTP錯誤的。
7. 在左邊窗口展開腳本信息
8. 雙擊Page Data節(jié)點展開所有的腳本項
9. 點每個腳本項在右邊窗口看頁面數(shù)據(jù)的報告
10. 在每項腳本的頁面數(shù)據(jù)報告檢查Result Codes部分,驗證是否有那項產(chǎn)生了HTTP錯誤。如果要看常見的結(jié)果代碼列表,請參考WAS幫助文件的"HTTP result codes"部分。
運行腳本
在準備好以上介紹的測試腳本后,你現(xiàn)在就可以準備運行測試及收集數(shù)據(jù)了。
你可以按照前面介紹的步驟手工運行每項測試。然而,這將會是一項耗時的過程。
WAS有一個對象模型,允許你創(chuàng)建自己的Microsoft Visual Basic Scripting Edition (VBScript)腳本來控制和配置測試運行。
當(dāng)測試運行時,你應(yīng)該監(jiān)視和記錄不同的性能相關(guān)的系統(tǒng)計數(shù)器,包括跟蹤系統(tǒng)吞吐量的計數(shù)器,反應(yīng)時間和資源利用率。
結(jié)論:最好的習(xí)慣
客戶機器。密切監(jiān)視每個客戶端的系統(tǒng)資源利用率。如果CPU或內(nèi)存使用高于80%,客戶端可能已經(jīng)過載,你應(yīng)該考慮使用更多的客戶端機器來測試。壓迫客戶端機器會導(dǎo)致不可靠結(jié)果和在與服務(wù)器連接時產(chǎn)生socket錯誤。
給服務(wù)器設(shè)置多層負載。估計一下需要并發(fā)請求的最大用戶量以便在預(yù)備測試中把你的Web服務(wù)器群推到100%的使用率。
當(dāng)沒有足夠的客戶端機器來使服務(wù)器群到達極限時,就需要設(shè)置更高的負載倍數(shù),例如,如果你發(fā)現(xiàn)使用4,000個線程,都乘一倍的負載系數(shù),你還是不能把服務(wù)器推到極限的話,把負載系數(shù)加大。然而,使用大于1的負載系數(shù)會產(chǎn)生不精確的Web程序頁面的TTLB。如果有可能,增加更多的機器比靠增加負載系數(shù)要好。
使用Session跟蹤。使用Session跟蹤來記錄WAS 和Web服務(wù)器之間的詳細連接。當(dāng)定義一個新的WAS腳本時,確保所有的URL都正常工作而且Web服務(wù)器返回的是所需要的結(jié)果。如果不是,那么很有可能你得到改進的性能結(jié)果,但是Web服務(wù)器返回的卻是錯誤的響應(yīng)。
你應(yīng)該設(shè)置SessionTrace為1,類型為REG_DWORD。SessionTrace線程跟蹤可以在注冊表的\HKEY_LOCAL_MACHINE \SOFTWARE \Microsoft \WAS注冊。最后,記得在確認了新的腳本后關(guān)掉SessionTrace(0),否則,你的磁盤會很快就滿了。
監(jiān)視Web服務(wù)器的日志文件。要準備重新部署或清除你的Web服務(wù)器日志文件。太多的性能測試會使它膨脹的很快,尤其對于長時間的測試。你也可以把日志文件作為故障檢查員幫助你檢查WAS報告的應(yīng)用程序錯誤。
限制腳本的項數(shù)和用戶數(shù)。避免創(chuàng)建多于1000腳本或用戶,除非有特殊原因需要多于這個數(shù)目的對象。雖然允許的數(shù)目限制是由客戶端的內(nèi)存決定的,你會發(fā)現(xiàn)初始化這么多的腳本和用戶會花費太多的時間
跟蹤HTTP重定向的選項。如果腳本已經(jīng)錄制了重定向的URL就不要再使用這項選項。如果你使用這項選項,重定向的頁面將會計算兩次。
用戶名和密碼。 WAS的幫助文件說用USERNAME 和 PASSWORD填表是指定每一個WAS用戶的方法。在我們的測試過程中使用USERNAME 和 PASSWORD會大大地增加關(guān)閉各個客戶端的腳本的時間。從一些WAS的內(nèi)部使用者得到建議,我們在QueryString里指定USER 和 PASSWORD名字-值對。通過為USER 和 PASSWORD設(shè)置順序訪問機制,我們保證了密碼總是和用戶名對應(yīng)。
除了WAS的一些缺陷外,WAS是你發(fā)布網(wǎng)站之前模擬用戶使用你的網(wǎng)站的好工具。使用性能測試工具對于成功的網(wǎng)站程序發(fā)布有重要作用。這些工具允許你清楚你的程序的性能特征,那么你就會清楚你的程序在高負載情況下會如何表現(xiàn)。你在操作網(wǎng)站的過程中得到的驚奇越少,你的站點就越可靠。