了解度量標準
下一步是清楚地定義度量標準。度量標準的例子包括:每分鐘處理的定單數,或者執行對 ASP 頁面的請求所需要的毫秒數。度量標準允許您量化每次測試運行之間進行更改的結果。它們提供了與為您的 Web 應用程序定義的標準之間的一種比較。
為了確定需要跟蹤的度量標準,需要采取一系列步驟。您需要定義待回答的問題,為每個問題定義質量條,然后確定將測試結果與質量條進行比較所必需的度量標準。
第一步很直接。例如,您可能想要了解簽出響應時間。請記住列出那些與測試策略相關的問題,而避免組織您無法測試的模糊問題。
下一步是為每個問題定義質量條。讓我們以典型的定單提交流程為例。我們可能決定站點在峰值負載期間每分鐘必須處理 10 份定單,一名用戶等到請求執行的時間不應超過 30 秒。為了建立這樣一個標準,您可能會注意許多不同的源。首先咨詢業界人士,了解系統性能的可接受級別。將歷史數據帶到這些會議上將有助于討論,并常??捎脕砉芾眍A期情況。如果在生產環境中已存在某個版本,則可以從當前站點活動和增加的通信量的短期投影收集數據,或通過查詢現有數據庫的活動趨勢來收集數據。
有了一份問題列表和每個問題的質量標準后,您現在就需要確定使用哪個度量標準。根據上一個例子,每分鐘定單數和給定測試中的定單數將是良好的高級度量標準,這些標準可作為站點是否滿足質量條要求的指示器。當您想要在測試過程中更新這些度量標準時,應報告給管理層。
較低級的度量標準衡量性能并幫助您解決系統瓶頸和穩定性問題,或將這類瓶頸和問題減到最少。增加性能也許會對高級度量標準產生直接影響。例如,減少特定活動的事務時間可能導致每分鐘定單數的增加。
大多數測試工具允許您在個別頁上或一組頁上設置定時器,并提供運行測試用例的平均時間。兩種度量標準均允許您將高級度量標準用于一次又一次測試運行,但它們均不能幫助您深入了解到底是什么需要改進。
對此 Windows 性能計數器很有用。例如,您可以監視 dllhost 進程的 Process:Private Bytes,以檢測服務器軟件包中的內存泄漏。有關各個Microsoft Internet 信息服務 (IIS) 計數器的適合且詳細的描述,可從The Art and Science of Web Server Tuning with Internet Information Services 5.0獲取,而圖 3描述了用于負載測試的主要計數器以及要注意的趨勢。
但是,性能計數器只在識別問題癥狀時有用,對識別問題原因無用。如果您的系統在 20 名并發用戶時中斷,則 Active Server Pages:Requests Timed Out 計數器可以真正確認,至少一名用戶已超時,但要確定超時的原因卻如同大海撈針。這是因為性能計數器數據主要提供操作系統和網絡級別的信息。要成功找到問題的原因,需要訪問應用層的數據。此任務的關鍵是,構建分布式日志記錄系統,以檢索并集中存儲來自應用程序中的錯誤和性能數據。這允許您立刻了解系統是否正在工作。如果系統沒有工作,則您就擁有了找到問題領域所必需的信息。
解釋度量標準
配置完所有這些度量標準之后,現在您就可以訪問大量數據。因此,您將如何以有效率的方式來理解數據?我們將針對解釋性能計數器數據討論三個選項:性能監視器、Perfcol 以及與負載測試工具集成的性能數據。
Windows 2000 中的性能監視器允許您以圖形的方式顯示各個計數器的進度。一個有用的功能是能夠在日志文件中捕獲讀數,從而允許您在測試運行一完成就以可視的方式檢查整個測試運行。圖 4說明了在線訂購應用程序上的站點活動如何能在性能監視器中得到解釋。
沿著與性能監視器同一條線,Windows DNA Performance Kit Beta 包含一個稱為 Perfcol 的工具。此工具的用途與性能監視器類似,不同之處在于該工具將取樣數據存儲在數據庫中,而不是寫入文件。
一些負載測試工具,例如 Microsoft Application Center Test (ACT) 和來自 Empirix 的 e-TEST 套件,均包含內置的性能計數器功能,它們能在測試的運行持續期間記錄度量值。然后計數器數據會寫入數據庫以供以后訪問。ACT 包含在 Visual Studio .NET 中,它集成了性能監視器計數器,允許所有數據均存儲在單個資源庫中。
不管負載測試工具是否集成某種形式的性能計數器監視,您也許均會發現仍需要諸如性能監視器之類的工具的支持,尤其是如果產生負載的服務器沒有適當的安全訪問權來監視應用程序服務器時,這種情況在環境包含防火墻時會頻繁發生。
無論選擇何種監視工具,關鍵在于存儲每次測試運行的度量標準以供將來評估。轉回到過去的數據對于理解系統如何響應所作的更改很關鍵。
對于日志記錄系統生成的應用級數據,我們建議構建一個查看器,該查看器使您能夠立即訪問一個位置內的錯誤和性能信息??紤]到它所代替的操作是每次要求反饋時在命令行生成 SQL 查詢,因此這項工作還是值得的。