ASP.NET 的效能計數器

更新:2007 年 11 月

ASP.NET 支援兩個效能計數器群組:系統和應用程式。系統效能計數器會在 Windows 效能監視器中公開 (Expose) 成為 [ASP.NET] 效能計數器物件。應用程式效能計數器則會公開成為 [ASP.NET 應用程式] 效能物件。

注意事項:

與每個效能計數器相關的值每 400 毫秒會進行更新。建立監視應用程式時,請確定將這個時間間隔列入考慮,這樣您的程式碼便不會使用過時的計數器值。如需詳細資訊,請參閱使用系統監視元件

如需系統和應用程式效能計數器的其他資訊,請參閱 HOW TO:建立效能計數器分類分類和計數器管理HOW TO:建立自訂效能計數器

監視 ASP.NET Web 應用程式的效能時,您可以追蹤列在下表中的效能計數器。

效能物件

效能計數器

ASP.NET

Application Restarts

ASP.NET

Requests Queued

ASP.NET

Worker Process Restarts

ASP.NET 應用程式

Errors Total

ASP.NET 應用程式

Requests/Sec

處理器

% CPU Utilization

注意事項:
無論用戶端負載多少,都呈低 CPU 使用率或無法最大化 CPU 使用率時,可能表示 Web 應用程式中有鎖定或資源爭用的狀況。

此外,下列效能計數器對於判斷 Web 應用程式的效能問題頗有價值。

效能物件

效能計數器

ASP.NET 應用程式

Pipeline Instance Count

.NET CLR 例外狀況

# of Exceps Thrown

系統

Context Switches/sec

[# of Exceps Thrown] 計數器會顯示應用程式中擲回的例外狀況數目,因為這些例外狀況可能會對效能造成影響。不過,有些程式碼路徑需依賴例外狀況才能正常運作。例如,Response 物件上的 Redirect 方法會擲回無法攔截的 ThreadAbortException 例外狀況。因此,在追蹤這個值和 [Errors Total] 計數器,以查看例外狀況是否會在應用程式上產生錯誤時,可能有所幫助。

[Context Switches/sec] 計數器測量執行緒內容由 Web 伺服器電腦上所有 CPU 所交換的速率。如果這個計數器的數字很大,通常表示鎖定中有劇烈的爭用,或是使用者和核心 (Kernel) 模式之間由執行緒進行了許多交換。如果經歷此狀況,您應該使用取樣分析工具 (Profiler) 和其他工具做進一步的調查。

ASP.NET 系統效能計數器

ASP.NET 會支援下表所列的 ASP.NET 系統效能計數器。這些計數器會彙總 (Aggregate) Web 伺服器電腦上所有 ASP.NET 應用程式中的資訊。

注意事項:

在 [ASP.NET] 效能物件中發現的 [State Server Sessions] 計數器之間有顯著的不同,它們只適用於執行狀態伺服器的伺服器電腦,而在 [ASP.NET 應用程式] 效能物件中發現的 [Sessions] 計數器,則只適用在同處理序 (In-Process) 中發生的使用者工作階段。

  • Application Restarts
    應用程式在 Web 伺服器的存留期 (Lifetime) 期間已經重新啟動的次數。每次引發 Application_OnEnd 事件時,就會遞增應用程式重新啟動。應用程式重新啟動可能會由於變更 Web.config 檔、變更存放在應用程式 Bin 目錄中的組件,或者因大幅變更 ASP.NET Web 網頁而必須重新編譯應用程式所致。如果這個計數器中的數字未如預期增加,可能表示發生問題而導致您的 Web 應用程式重新啟動。在這類情況中,您應該儘速展開調查。

    注意事項:

    這個值會在每次重新啟動網際網路資訊服務 (IIS) 主機時重設為零。

  • Application Running
    正在伺服器電腦上同時執行的應用程式數目。

  • Requests Disconnected
    因通訊失敗而造成中斷連接的要求數目。

  • Requests Queued
    在佇列中等待服務的要求數目。當這個數字隨著用戶端負載增加而開始直線遞增時,Web 伺服器電腦即已達到它能夠處理的並行要求限制。這個計數器的預設最大值是 5,000。您可以在 Machine.config 檔案中變更這個設定。

  • Requests Rejected
    由於沒有充足的伺服器資源處理,因而未執行的要求總數。這個計數器表示傳回 503 HTTP 狀態碼 (表示伺服器太過忙碌) 的要求數目。

  • Request Wait Time
    最近發生的要求在佇列中等候處理的毫秒數。

  • Session State Server Connections Total
    到儲存跨處理序 (Out-Of-Process) 工作階段狀態資料之電腦的工作階段狀態連接總數。如需詳細資訊,請參閱工作階段狀態模式

  • Session SQL Server Connections Total
    到儲存工作階段狀態資料之 Microsoft SQL Server 資料庫的工作階段狀態連接總數。如需詳細資訊,請參閱工作階段狀態模式

  • State Server Sessions Abandoned
    已經明確放棄的使用者工作階段的數目。這些是被特定使用者動作結束的工作階段,例如關閉瀏覽器或巡覽至另一個網站。這個計數器僅於狀態伺服器服務 (aspnet_state) 執行所在的電腦上可用。

  • State Server Sessions Active
    目前作用中使用者工作階段的數目。這個計數器僅於狀態伺服器服務 (aspnet_state) 執行所在的電腦上可用。

  • State Server Sessions Timed Out
    已經透過使用者的不動作而變成非現用使用者工作階段的數目。這個計數器僅於狀態伺服器服務 (aspnet_state) 執行所在的電腦上可用。

  • State Server Sessions Total
    在處理序存留期期間建立的工作階段數目。這個計數器是 [State Server Sessions Active]、[State Server Sessions Abandoned] 和 [tate Server Sessions Timed Out] 的總計值。這個計數器僅於狀態伺服器服務 (aspnet_state) 執行所在的電腦上可用。

  • Worker Process Restarts
    背景工作處理序在伺服器電腦上已經重新啟動的次數。背景工作處理序如果未預期地失敗或是故意回收時即可重新啟動。如果此計數器未預期地增加,您應該盡快進行調查。

  • Worker Process Running
    正在伺服器電腦上執行的背景工作處理序的數目。

ASP.NET 應用程式效能計數器

ASP.NET 會支援下表所列的應用程式效能計數器。這些計數器可讓您監視 ASP.NET 應用程式之單一執行個體的效能。名為 [__Total__] 的唯一執行個體可用於這些計數器。這個執行個體會彙總 Web 伺服器上所有應用程式的計數器 (類似於本主題之前所描述的全域計數器)。__Total__ 執行個體永遠可供使用。沒有應用程式正在伺服器上執行時,計數器將顯示零。

  • Anonymous Requests
    使用匿名驗證 (Authentication) 的要求數。

  • Anonymous Requests/Sec
    使用匿名驗證的每秒要求數。

  • Cache Total Entries
    快取區中的項目總數。這個計數器包括 ASP.NET 網頁架構的快取使用量和透過快取 API 的應用程式快取使用量。

  • Cache Total Hits
    來自快取區的命中總數。這個計數器包括 ASP.NET 網頁架構的快取使用量和透過快取 API 的應用程式快取使用量。

  • Cache Total Misses
    每個應用程式的失敗快取要求數。這個計數器包括 ASP.NET 網頁架構的快取使用量和透過快取 API 的應用程式快取使用量。

  • Cache Total Hit Ratio
    快取區的命中數對遺漏數的比例。這個計數器包括 ASP.NET 網頁架構 NET 的快取使用量,以及透過快取 API 的應用程式快取使用量。

  • Cache Total Turnover Rate
    快取每秒的新增和移除數量,在判斷使用快取的效率上很有幫助。如果重組率很高,則快取區的使用便不是很有效率。

  • Cache API Entries
    應用程式快取中的項目總數。

  • Cache API Hits
    只透過外部快取 API 存取快取區時,來自快取區的命中總數。這個計數器不會追蹤 ASP.NET 網頁架構的快取使用量。

  • Cache API Misses
    透過外部快取 API 來存取快取區時,對快取區的失敗要求總數。這個計數器不會追蹤 ASP.NET 網頁架構的快取使用量。

  • Cache API Hit Ratio
    透過外部快取 API 來存取時,快取區命中數對遺漏數的比例。這個計數器不會追蹤 ASP.NET 網頁架構的快取使用量。

  • Cache API Turnover Rate
    透過外部 API (ASP.NET 網頁架構的使用除外) 使用時,快取每秒的新增和移除數量。這對於幫助確定快取區的有效使用方面很有用處。如果重組率很高,則快取區的使用便不是很有效率。

  • Compilations Total
    在目前 Web 伺服器處理序存留期期間已經發生的編譯總數。當具有 .aspx、.asmx、.ascx 或 .ashx 副檔名的檔案,或程式碼後置 (Code-Behind) 的原始程式檔 (Source File) 在伺服器上動態編譯時,就會發生編譯。

    當對應用程式的所有部分進行要求時,這個數目將會在一開始爬升到尖峰值。然而,一旦發生編譯,結果產生的編譯輸出會儲存到磁碟,並在其中重複使用直到其原始程式檔變更為止。這表示即使在處理序重新啟動的事件中,計數器可以保持為零 (非現用),直到應用程式被修改或重新部署為止。

  • Debugging Requests
    發生在啟用偵錯時的要求數。

  • Errors During Preprocessing
    在剖析過程中發生的錯誤數目,但編譯和執行階段錯誤除外。

  • Errors During Compilation
    在動態編譯期間發生的錯誤數目,但剖析器 (Parser) 和執行階段錯誤除外。

  • Errors During Execution
    在 HTTP 要求執行期間發生的錯誤總數,但剖析器和編譯錯誤除外。

  • Errors Unhandled During Execution
    發生在 HTTP 要求執行期間未處理的錯誤總數。未處理的錯誤是任何在使用者程式碼中未截獲的執行階段例外狀況,並且會進入 ASP.NET 內部錯誤處理邏輯。這個規則 (Rule) 的例外狀況發生在:

    • 已啟用自訂錯誤、已定義錯誤網頁,或兩者同時。

    • Page_Error 事件會定義於使用者程式碼中,而錯誤不是被清除 (使用 ClearError 方法),就是已經執行重新導向。

  • Errors Unhandled During Execution/Sec
    發生在 HTTP 要求執行期間之每秒未處理的例外狀況數。

  • Errors Total
    在 HTTP 要求執行期間發生的錯誤總數,包括剖析器、編譯或執行階段錯誤。這個計數器是 Errors During CompilationErrors During PreprocessingErrors During Execution 計數器的總和。運作良好的 Web 伺服器不應該產生錯誤。如果您的 ASP.NET Web 應用程式發生錯誤,它們會因為復原錯誤的極不同程式碼路徑,而造成偏差的效能結果。進行效能測試前請先調查和修正應用程式中的錯誤。

  • Errors Total/Sec
    在 HTTP 要求執行期間發生的每秒錯誤數目,包括剖析器、編譯或執行階段錯誤。

  • Output Cache Entries
    輸出快取中的項目總數。

  • Output Cache Hits
    輸出快取所服務的要求總數。

  • Output Cache Misses
    每個應用程式的失敗輸出快取要求數。

  • Output Cache Hit Ratio
    輸出快取所服務的總要求百分比。

  • Output Cache Turnover Rate
    每秒對輸出快取區加入和移除的數目。如果重組率很高,則快取區的使用便不是很有效率。

  • Pipeline Instance Count
    指定 ASP.NET 應用程式的作用中要求管線執行個體數。由於管線執行個體中只能執行一個執行緒,因此這個數字提供特定應用程式可處理之並行要求的最大數。在大部分的情況中,在負載下時這個數字最好比較低,表示妥善使用 CPU。

  • Request Bytes In Total
    所有要求的大小總計 (以位元組為單位)。

  • Request Bytes Out Total
    傳送至用戶端的回應大小總計 (以位元組為單位)。這不包括 HTTP 回應標頭。

  • Requests Executing
    目前執行中的要求數。

  • Requests Failed
    已失敗要求的總數。任何大於或等於 400 的狀態碼都將會遞增這個計數器。

    造成 401 狀態碼的要求將會遞增這個計數器和 [Requests Not Authorized] 計數器。造成 404 或 414 狀態碼的要求將會遞增這個計數器和 [Requests Not Found] 計數器。造成 500 狀態碼的要求將會遞增這個計數器和 [Requests Timed Out] 計數器。

  • Requests Not Found
    因為找不到資源而失敗的要求數 (狀態碼 404 或 414)。

  • Requests Not Authorized
    因沒有授權而失敗 (狀態碼 401) 的要求數。

  • Requests Succeeded
    成功執行 (狀態碼 200) 的要求數。

  • Requests Timed Out
    逾時 (狀態碼 500) 的要求數。

  • Requests Total
    自服務啟動以來的要求總數。

  • Requests/Sec
    每秒執行的要求數。這數字代表應用程式目前的效能。在常數負載下,這個數字應該維持在特定範圍內,限制其他伺服器工作 (如記憶體回收、快取區清除執行緒、外部伺服器工具等)。

  • Sessions Active
    目前作用中的工作階段數目。只在 In-Memory 工作階段狀態下支援這個計數器。

  • Sessions Abandoned
    已經明確放棄的工作階段數目。只在 In-Memory 工作階段狀態下支援這個計數器。

  • Sessions Timed Out
    已逾時的工作階段數目。只在 In-Memory 工作階段狀態下支援這個計數器。

  • Sessions Total
    工作階段總數。只在 In-Memory 工作階段狀態下支援這個計數器。

  • Transactions Aborted
    對所有使用中 ASP.NET 應用程式取消的交易數。

  • Transactions Committed
    對所有使用中 ASP.NET 應用程式認可的交易數。

  • Transactions Pending
    所有使用中 ASP.NET 應用程式正在處理的交易數。

  • Transactions Total
    所有使用中 ASP.NET 應用程式的交易總數。

  • Transactions/Sec
    對所有使用中 ASP.NET 應用程式啟動的每秒交易數。

請參閱

概念

效能概觀

從 ASP 轉換至 ASP.NET 時的效能問題

監視 ASP.NET 應用程式效能

其他資源

ASP.NET 快取