Visual Studio性能計數器,負載測試結果分析- Part III


對於一個多用戶的應用程序,性能是很是重要的。性能不只是執行的速度,它包括負載和併發方面。Visual Studio是能夠用於性能測試的工具之一。Visual Studio Test版或Visual Studio 2010旗艦版爲自動化測試提供了支持。html

 

介紹前端

對於一個多用戶的應用程序,性能是很是重要的。性能不只是執行的速度,它包括負載和併發方面。性能測試是對如下問題的回答web

  • 咱們如何確保咱們的新的應用程序將支持預期的用戶負載?
  • 如何避免在實際負載條件下會出現的問題?
  • 如何肯定響應時間?
  • 如何規劃服務器的容量?

 

Visual Studio是能夠用於性能測試的工具之一。Visual Studio Test版或Visual Studio 2010旗艦版爲自動化測試提供了支持。sql

這將是一系列文章的第三部分。數據庫

  • Part I: Web測試和配置緩存

  • Part II:負載測試,RIG和負載測試術語。服務器

  • Part III:性能計數器,負載測試結果分析。網絡

  

性能計數器併發

性能計數器能夠是系統預約義或用戶自定義的,用來衡量系統的性能。性能測試結果分析徹底依賴於做爲測試的一部分而捕獲的性能計數器。所以,爲了有更好的測試結果和更好的分析,咱們首先須要瞭解每一個服務器相關的的重要的計數器。app

咱們可使用性能監視器(這篇文章中討論的)或使用Visual Studio自己,來捕捉性能計數器。爲了獲取相應的服務器的計數器,在須要在Load test中把服務器添加到computer section。

 

 

添加計算機來收集性能計數器

在Load test中,右鍵單擊Run Settings 下的 Counter Set Mappings,選擇Manage Counter Sets選項。

Ambily.raj_3703_1

 

Manage Counter Sets窗口將被打開,在這裏咱們能夠添加計算機。添加計算機系統,並選擇相應的計數器。

Ambily.raj_0734_2

 

當負載測試執行時,咱們能夠在Visual Studio中觀察到每一個計算機系統對應的計數器。

Ambily.raj_4250_3

 

在性能監視器中添加計數器

本文也將討論設置性能監視器來捕獲計數器。若是您使用性能監視器來捕獲計數器,那麼咱們就須要確保在負載測試前啓動計數器,並在負載測試完成後再關閉它。還須要從多臺服務器合併結果並生成報告。

(譯者:在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,瞭解並解決此問題。

若是問題出在應用程序的代碼上,而後咱們須要研究的問題是,問題是不是由高速緩存,圖像,線程,鏈接池的問題致使的。

 

 

結論

咱們在下一篇文章中咱們將使用一些示例場景來更深刻討論性能測試的結果分析。

相關文章
相關標籤/搜索