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 Compilation、Errors During Preprocessing 和 Errors 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 應用程式啟動的每秒交易數。