asp.net 的性能计数器
ASP.NET 支持兩組性能計數(shù)器:系統(tǒng)和應用程序。前者在 ASP.NET 性能計數(shù)器對象中的 PerfMon 中公開;后者在 ASP.NET Applications 性能對象中公開。ASP.NET 性能對象中的 State Server Sessions 計數(shù)器(僅適用于在其中運行狀態(tài)服務器的服務器計算機)和 ASP.NET Applications 性能對象中的 Sessions 計數(shù)器(僅適用于進程中發(fā)生的用戶會話)之間存在很大的差異。
注意 每 400 毫秒更新一次與每個性能計數(shù)器關聯(lián)的值。
在監(jiān)視 ASP.NET Web 應用程序的性能時,應該始終跟蹤下表中列出的性能計數(shù)器。
| 性能對象 | 性能計數(shù)器 |
|---|---|
| ASP.NET | Application Restarts |
| ASP.NET | Requests Queued |
| ASP.NET | Worker Process Restarts |
| ASP.NET Applications | Errors Total |
| ASP.NET Applications | Requests/Sec |
| Processor | % CPU Utilization |
% CPU Utilization 計數(shù)器監(jiān)視 Web 服務器計算機上的 CPU 使用情況。無論客戶端負載如何,CPU 使用率很低或者無法達到 CPU 最大使用率就意味著 Web 應用程序中存在資源或鎖定競爭。
此外,在確定 Web 應用程序性能問題時,下表中列出的性能計數(shù)器是非常有用的。
| 性能對象 | 性能計數(shù)器 |
|---|---|
| ASP.NET Applications | Pipeline Instance Count |
| .NET CLR Exceptions | # of Exceps Thrown |
| System | Context Switches/sec |
# of Exceps Thrown 計數(shù)器顯示應用程序中引發(fā)的異常數(shù)量,因為它們可能會對性能造成不利影響。但是,某些代碼路徑必須依賴異常才能正常工作。例如,HttpResponse.Redirect 方法始終引發(fā)一個無法捕獲的異常 ThreadAbortException。因此,使用 Errors Total 計數(shù)器跟蹤引發(fā)的異常數(shù)量以查看異常是否在應用程序上生成錯誤更有用處。
Context Switches/sec 計數(shù)器測量 Web 服務器計算機中所有 CPU 切換線程上下文的速率。如果此計數(shù)器的數(shù)值較大,則表明鎖定競爭很激烈,或者線程在用戶和內(nèi)核模式之間頻繁切換??赡苓€需要使用采樣分析器和其他工具進行進一步的分析。
以下列表詳細介紹了 ASP.NET 和 ASP.NET Applications 性能對象中的計數(shù)器。
ASP.NET 系統(tǒng)性能計數(shù)器
ASP.NET 支持以下 ASP.NET 系統(tǒng)性能計數(shù)器。它們匯集 Web 服務器計算機上所有 ASP.NET 應用程序的信息,或者它們通常應用于運行相同應用程序的 ASP.NET 服務器的系統(tǒng)。它們可能包含 Web 場和 Web 園。
- Application Restarts
- 在 Web 服務器的生存期內(nèi)應用程序已重新啟動的次數(shù)。每發(fā)生一次 Application_OnEnd 事件,應用程序重新啟動次數(shù)就會增加一次??赡苡捎谝韵略蚨霈F(xiàn)應用程序重新啟動:更改 Web.config 文件,更改應用程序 /Bin 目錄中存儲的程序集,或者對 Web 表單頁更改過多。此計數(shù)器意外增加可能意味著,未知問題將導致 Web 應用程序關閉。在此類情況下,應該盡早調(diào)查原因。
注意 每次重新啟動 Internet 信息服務 (IIS) 主機時,就會重置該值。
Application Running - 服務器計算機上運行的應用程序的數(shù)量。 Requests Disconnected
- 由于通訊故障而斷開的請求數(shù)量。 Requests Queued
- 在隊列中等待服務的請求數(shù)。當此數(shù)值隨客戶端負載線性增加時,則 Web 服務器計算機已達到它所能處理的并發(fā)請求的上限。此計數(shù)器的默認最大值為 5,000??梢栽谟嬎銠C的 Machine.config 文件中更改此設置。 Requests Rejected
- 由于處理請求的服務器資源不足而未執(zhí)行的請求總數(shù)。此計數(shù)器表示返回 503 HTTP 狀態(tài)代碼(表示服務器太忙)的請求數(shù)量。 Request Wait Time
- 隊列中的最近請求等待處理的亳秒數(shù)。 Session State Server Connections Total
- 存儲進程外會話狀態(tài)數(shù)據(jù)的計算機的會話狀態(tài)連接總數(shù)。 Session SQL Server Connections Total
- 存儲會話狀態(tài)數(shù)據(jù)的 Microsoft SQL?Server? 數(shù)據(jù)庫的會話狀態(tài)連接總數(shù)。 State Server Sessions Abandoned
- 已明確放棄的用戶會話數(shù)。它們是由特定用戶操作結束的會話,如關閉瀏覽器或瀏覽到另一個站點。該計數(shù)器只用于運行狀態(tài)服務器服務 (aspnet_state) 的計算機上。 State Server Sessions Active
- 當前活動用戶會話的數(shù)量。該計數(shù)器只用于運行狀態(tài)服務器服務 (aspnet_state) 的計算機上。 State Server Sessions Timed Out
- 由于用戶非活動而處于非活躍狀態(tài)的用戶會話數(shù)。該計數(shù)器只用于運行狀態(tài)服務器服務 (aspnet_state) 的計算機上。 State Server Sessions Total
- 在進程生存期內(nèi)創(chuàng)建的會話數(shù)。此計數(shù)器是 State Server Sessions Active、State Server Sessions Abandoned 和 State Server Sessions Timed Out 的累積值。該計數(shù)器只用于運行狀態(tài)服務器服務 (aspnet_state) 的計算機上。 Worker Process Restarts
- 在服務器計算機上已重新啟動工作進程的次數(shù)。如果工作進程意外失敗或者有意回收,則可以重新啟動該工作進程。當此計數(shù)器出現(xiàn)意外增加時,應該盡早調(diào)查原因。 Worker Process Running
- 服務器計算機上運行的工作進程的數(shù)量。
ASP.NET Application 性能計數(shù)器
ASP.NET 支持以下應用程序性能計數(shù)器,可以使用這些計數(shù)器來監(jiān)視單個 ASP.NET 應用程序?qū)嵗男阅?。這些計數(shù)器均有一個唯一實例 __Total__,該實例合計 Web 服務器上所有應用程序的計數(shù)器(與本主題第一節(jié)中描述的全局計數(shù)器類似)。__Total__ 實例始終可用。當服務器上沒有應用程序時,這些計數(shù)器將顯示零。
- Anonymous Requests
- 使用匿名身份驗證的請求數(shù)。 Anonymous Requests/Sec
- 每秒使用匿名身份驗證的請求數(shù)。 Cache Total Entries
- 緩存中的總項數(shù)。該計數(shù)器既包括由 ASP.NET 頁框架在內(nèi)部使用的緩存,又包括通過公開的 API 在外部使用的緩存。 Cache Total Hits
- 緩存的命中總數(shù)。該計數(shù)器既包括由 ASP.NET 頁框架在內(nèi)部使用的緩存,又包括通過公開的 API 在外部使用的緩存。 Cache Total Misses
- 每個應用程序失敗的緩存請求數(shù)。該計數(shù)器既包括由 ASP.NET 在內(nèi)部使用的緩存,又包括通過公開的 API 在外部使用的緩存。 Cache Total Hit Ratio
- 緩存的命中與未命中的比率。該計數(shù)器既包括由 ASP.NET 在內(nèi)部使用的緩存,又包括通過公開的 API 在外部使用的緩存。 Cache Total Turnover Rate
- 每秒對總緩存的添加數(shù)和移除數(shù)。這對確定緩存的使用效率很有幫助。如果反復很大,則無法有效地使用緩存。 Cache API Entries
- 應用程序緩存中的總項數(shù)。 Cache API Hits
- 當只通過外部緩存 API 訪問緩存時,緩存中的命中總數(shù)。該計數(shù)器不跟蹤由 ASP.NET 在內(nèi)部使用的緩存。 Cache API Misses
- 在通過外部緩存 API 訪問時,失敗的緩存請求的總數(shù)。該計數(shù)器不跟蹤由 ASP.NET 在內(nèi)部使用的緩存。 Cache API Hit Ratio
- 在通過外部緩存 API 訪問時,緩存命中與未命中的比率。該計數(shù)器不跟蹤由 ASP.NET 在內(nèi)部使用的緩存。 Cache API Turnover Rate
- 在通過外部 API 使用(不包括 ASP.NET 頁框架在內(nèi)部使用的緩存)時,緩存每秒增加或減少的數(shù)量。這對確定緩存的使用效率很有幫助。如果反復很大,則無法有效地使用緩存。 Compilations Total
- 在當前 Web 服務器進程的生存期內(nèi)發(fā)生的編譯總數(shù)。當在服務器上動態(tài)編譯擴展名為 .aspx、.asmx、.ascx 或 .ashx 的文件或代碼隱藏源文件時,就會發(fā)生這種情況。
注意 在對應用程序的所有部分提出請求時,此數(shù)值開始逐步達到峰值。但是,在進行編譯時,將產(chǎn)生的二進制數(shù)據(jù)保存到磁盤(在其中重新使用該數(shù)據(jù),直到其源文件發(fā)生變化時為止)中。這意味著,即使進程重新啟動,計數(shù)器仍可保持為零(非活躍),直到修改或重新部署應用程序時為止。
Debugging Requests - 在啟用調(diào)試時發(fā)生的請求數(shù)。 Errors During Preprocessing
- 在分析期間發(fā)生的錯誤數(shù)。不包括編譯和運行時錯誤。 Errors During Compilation
- 在動態(tài)編譯期間發(fā)生的錯誤數(shù)。不包括分析程序和運行時錯誤。 Errors During Execution
- 在執(zhí)行 HTTP 請求期間發(fā)生的錯誤總數(shù)。不包括分析程序和編譯錯誤。 Errors Unhandled During Execution
- 在執(zhí)行 HTTP 請求期間發(fā)生的未處理錯誤的總數(shù)。
注意 未處理的錯誤是指任何未捕獲的運行時異常,它轉(zhuǎn)換頁面上的用戶代碼并輸入 ASP.NET 內(nèi)部錯誤處理邏輯。在以下情況下,此規(guī)則出現(xiàn)例外情況:
- 啟用了自定義錯誤和/或定義了錯誤頁面。
- 在用戶代碼中定義了 Page_Error 事件并且清除了該錯誤(使用 HttpServerUtility.ClearError 方法)或執(zhí)行重定向。
Errors Unhandled During Execution/Sec - 在執(zhí)行 HTTP 請求期間每秒發(fā)生的未處理異常的數(shù)量。 Errors Total
- 在執(zhí)行 HTTP 請求期間發(fā)生的錯誤的總數(shù)。包括任何分析程序、編譯或運行時錯誤。此計數(shù)器是 Errors During Compilation、Errors During Preprocessing 和 Errors During Execution 計數(shù)器的總和。正常工作的 Web 服務器不應生成錯誤。如果在 ASP.NET Web 應用程序中發(fā)生錯誤,則它們可能會由于錯誤恢復的代碼路徑不同而歪曲吞吐量結果。在執(zhí)行調(diào)試之前,調(diào)查并修復應用程序中的任何錯誤。 Errors Total/Sec
- 在執(zhí)行 HTTP 請求期間每秒發(fā)生的錯誤數(shù)。包括任何分析程序、編譯或運行時錯誤。 Output Cache Entries
- 輸出緩存中的總項數(shù)。 Output Cache Hits
- 從輸出緩存中處理的請求總數(shù)。 Output Cache Misses
- 每個應用程序失敗的輸出緩存請求數(shù)。 Output Cache Hit Ratio
- 從輸出緩存中處理的全部請求所占的百分比。 Output Cache Turnover Rate
- 輸出緩存每秒增加或減少的數(shù)量。如果反復很大,則無法有效地使用緩存。 Pipeline Instance Count
- 指定 ASP.NET 應用程序的活動請求管道實例的數(shù)量。因為在管道實例內(nèi)只能運行一個執(zhí)行線程,所以此數(shù)值給出了為某個應用程序處理的并發(fā)請求的最大數(shù)量。在大多數(shù)情況下,在具有負載時最好將此數(shù)值控制很低,這表明 CPU 的使用率很高。 Request Bytes In Total
- 所有請求的總大小(以字節(jié)為單位)。 Request Bytes Out Total
- 發(fā)送到客戶端的響應的總大小(以字節(jié)為單位)。這不包括標準的 HTTP 響應頭。 Requests Executing
- 當前執(zhí)行的請求數(shù)。 Requests Failed
- 失敗請求的總數(shù)。如果任何和全部狀態(tài)代碼大于或等于 400,就會增加此計數(shù)器。
注意 導致 401 狀態(tài)代碼的請求將增加此計數(shù)器和 Requests Not Authorized 計數(shù)器。導致 404 或 414 狀態(tài)代碼的請求將增加此計數(shù)器和 Requests Not Found 計數(shù)器。導致 500 狀態(tài)代碼的請求將增加此計數(shù)器和 Requests Timed Out 計數(shù)器。
注意 在拒絕請求(無法完成,因為拒絕是由 IIS 而不是由進程模型完成的)時,等價的 ASP 計數(shù)器也將增加。
Requests Not Found - 由于未找到資源而失敗的請求數(shù)(狀態(tài)代碼 404、414)。 Requests Not Authorized
- 由于無授權而失敗的請求數(shù)(狀態(tài)代碼 401)。 Requests Succeeded
- 已成功執(zhí)行的請求數(shù)(狀態(tài)代碼 200)。 Requests Timed Out
- 已超時的請求數(shù)(狀態(tài)代碼 500)。 Requests Total
- 服務啟動后的請求總數(shù)。 Requests/Sec
- 每秒執(zhí)行的請求數(shù)。它表示應用程序的當前吞吐量。在恒定負載下,此數(shù)值應處于特定的范圍內(nèi)(不包含其他的服務器工作,如垃圾回收、緩存清理線程和外部服務器工具等)。 Sessions Active
- 當前活動會話的數(shù)量。該計數(shù)器只受內(nèi)存中會話狀態(tài)的支持。 Sessions Abandoned
- 已明確放棄的會話數(shù)。該計數(shù)器只受內(nèi)存中會話狀態(tài)的支持。 Sessions Timed Out
- 超時的會話數(shù)量。該計數(shù)器只受內(nèi)存中會話狀態(tài)的支持。 Sessions Total
- 超時的會話數(shù)量。該計數(shù)器只受內(nèi)存中會話狀態(tài)的支持。 Transactions Aborted
- 中止的事務數(shù)。 Transactions Committed
- 提交的事務數(shù)。 Transactions Pending
- 進行中的事務數(shù)。 Transactions Total
- 服務啟動后的事務總數(shù)。 Transactions/Sec
- 每秒啟動的事務數(shù)。??
?
總結
以上是生活随笔為你收集整理的asp.net 的性能计数器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《感兴二首》第十三句是什么
- 下一篇: 你会娶一个双手被开水烫过的女生吗?[已扎