原文作者:Ambily.raj
對於一個多用戶的應用程序,性能是非常重要的。性能不僅是執行的速度,它包括負載和並發方面。Visual Studio是可以用於性能測試的工具之一。Visual Studio Test版或Visual Studio 2010旗艦版為自動化測試提供了支持。
介紹
對於一個多用戶的應用程序,性能是非常重要的。性能不僅是執行的速度,它包括負載和並發方面。性能測試是對以下問題的回答
- 我們如何確保我們的新的應用程序將支持預期的用戶負載?
- 如何避免在實際負載條件下會出現的問題?
- 如何確定響應時間?
- 如何規划服務器的容量?
Visual Studio是可以用於性能測試的工具之一。Visual Studio Test版或Visual Studio 2010旗艦版為自動化測試提供了支持。
這將是一系列文章的第三部分。
-
Part I: Web測試和配置
-
Part II:負載測試,RIG和負載測試術語。
-
Part III:性能計數器,負載測試結果分析。
性能計數器
性能計數器可以是系統預定義或用戶自定義的,用來衡量系統的性能。性能測試結果分析完全依賴於作為測試的一部分而捕獲的性能計數器。因此,為了有更好的測試結果和更好的分析,我們首先需要了解每個服務器相關的的重要的計數器。
我們可以使用性能監視器(這篇文章中討論的)或使用Visual Studio本身,來捕捉性能計數器。為了獲取相應的服務器的計數器,在需要在Load test中把服務器添加到computer section。
添加計算機來收集性能計數器
在Load test中,右鍵單擊Run Settings 下的 Counter Set Mappings,選擇Manage Counter Sets選項。
Manage Counter Sets窗口將被打開,在這里我們可以添加計算機。添加計算機系統,並選擇相應的計數器。
當負載測試執行時,我們可以在Visual Studio中觀察到每個計算機系統對應的計數器。
在性能監視器中添加計數器
本文也將討論設置性能監視器來捕獲計數器。如果您使用性能監視器來捕獲計數器,那么我們就需要確保在負載測試前啟動計數器,並在負載測試完成后再關閉它。還需要從多台服務器合並結果並生成報告。
(譯者:在Run中輸入perfmon,來打開性能監視器。在性能工具->性能監視器下打開性能監視器圖表,在性能監視器圖表中,點擊+或右鍵菜單來添加計數器)
重要的計數器
我們根據服務器和服務器上的應用程序來捕獲對應的計數器。例如,一個數據庫服務器所需的計數器和web服務器上的不同。另外,我們需要為每個服務器設置通用的計數器,如處理器利用率,內存利用率等。在本節中,我們將討論通用計數器和應用程序服務器以及數據庫服務器所需的重要的計數器。在這里,我們將討論一些重要的計數器,但不是全部。
通用計數器
\Processor(*)\%Processor time -這個計數器衡量處理器的利用率。在所有服務器上捕捉這個計數器,並測量平均使用率。在空閑的情況下,處理器的利用率應低於80%。
\Process(*)\Private Bytes - 指示分配給該進程的內存的字節數。該計數器指示進程的內存使用率。
\Network Interface\Bytes Received/sec, \Network Interface\Bytes Sent/sec, \Network Interface\Bytes Total/sec -這三個計數器指示了服務器的網絡使用率。
ASP.NET Web應用程序服務器計數器
\.Net CLR Data\ -這個計數器組包含與以下相關的計數器:連接池的數量,失敗的連接嘗試的數量和在應用程序服務器上運行的特定進程的連接池的數量。
(譯者:.net連接池用於ADO.net和數據庫連接,可以參考.NET連接池救生員一文)
\.Net CLR LocksAndThreads\ -這個計數器組包含物理和邏輯線程數和發生競爭(Contentions)的數量。
(譯者:邏輯線程指托管線程;物理線程指操作系統線程;Contentions指試圖獲取托管鎖發生的錯誤)
\.Net CLR Memory\ -這個計數器組包括Gen 0,Gen 1和Gen 2的垃圾回收數量和堆的大小。指示了垃圾收集率和應用程序每輪的內存管理。
\.Net Memory Cache4.0\ -這個計數器組幫助你了解應用程序的緩存實現。
\ASP.Net Applications\ -這個計數器組提供請求處理和應用管理的概覽:有多少請求被處理,拒絕,排隊或斷開,緩存命中率和失誤,錯誤,身份驗證失敗,輸出緩存請求數和失敗數,活躍和被丟棄的會話,提交和中止的事務。
數據庫服務器計數器
\Database\ -數據庫相關的計數器,如數據庫高速緩存的大小,數據庫I / O讀取和寫入,頁面轉換和記錄轉換。SQL Server特定的計數器被定義在單獨的計數器組。
\SQLAgent:Jobs\ -該計數器組包含的計數器指示了SQL Server中運行的作業的狀態。指示了有多少作業是是活動的,失敗的,正在排隊,或已成功執行。
\SQLServer:Locks\ -這個計數器指示在應用程序執行中有多少次死鎖發生。
通用術語
在討論的計數器以及如何理解它們前,我們需要研究性能測試相關的多個術語。
響應時間(Response Time)
大多數的性能測試是為了了解在給定負載情況下應用程序的響應時間。如果應用程序沒有完成性能測試,那么預期的用戶負載的響應時間可能不會被定義。
響應時間是指一個頁面或者事務響應用戶所花費的時間。8秒是一個網頁標准的最大響應時間。如果頁面有很多的圖像或視頻,它可能需要更多的時間來加載。為了更好的使用,我們可以加載頁面中使用異步調用和Ajax。如果響應時間是非常高的,用戶的體驗將變得糟糕,對應用的使用方法也可能會影響到響應時間。減少響應時間的同時保持豐富的用戶界面是一項挑戰。
吞吐量(Throughput)
吞吐量是每秒由服務器處理的事務或輸入的數量。這指示了服務器每次可以處理的負載或請求的數量。根據吞吐量和響應時間的要求,我們可以來規划的服務器集群。
資源利用(Resource Utilization)
資源利用包括服務器的處理器,內存和網絡的利用率。應用程序對服務器資源的利用率確定了,我們是部署一台服務器,還是需要部署多台服務器。
這是三個主要的性能測試術語或者指標。除了這些衡量指標以外,我們有網絡時間,等待時間,請求時間,測試組合,負載組合等指標,我們將在后面討論。
結果分析
現在,我們有所需的計數器數據和性能數據,如響應時間和吞吐量等。對於不同場景的性能結果分析,無法在一兩個文檔中解釋清楚。取決於我們收到的作為性能測試的結果數據,分析會有所不同。
例如,假設你得到很高的響應時間,同時具有良好的資源利用率。簡單來說這意味着,高響應時間不是由於任何資源的問題引起的,它可能是由於你的SQL部分或前端代碼引起。查看SQL計數器,並確定是否有特定的頁面做了某些數據庫調用並產生大量的讀,寫或占用大量CPU時間。如果是這樣的話,這個問題在於數據庫查詢或存儲過程。而后,我們縮小到數據庫級別的問題,然后我們就可以使用數據庫工具,如SQL Execution plan或Data engine tuning advisor,了解並解決此問題。
如果問題出在應用程序的代碼上,然后我們需要研究的問題是,問題是否是由高速緩存,圖像,線程,連接池的問題導致的。
結論
我們在下一篇文章中我們將使用一些示例場景來更深入討論性能測試的結果分析。
本文由知平軟件的劉斌華翻譯,轉載請注明出處。原文地址:http://www.dotnetfunda.com/articles/article1563-web-performance-test-using-visual-studio-part-iii.aspx
知平軟件致力於移動平台自動化測試技術的研究,我們希望通過向社區貢獻知識和開源項目,來促進行業和自身的發展。



