Windows 效能監視器工具
如果需要在一臺計算機上監視多個 Report Server 例項,可以同時或單獨監視這些例項。選擇要包括的例項是計數器新增過程的一部分。有關使用 Windows 附帶的效能工具的更多資訊,請參見微軟 Windows 產品文件。
若要訪問效能工具
• |
從“開始”選單上選擇“執行”。 |
• |
在“開啟”文字框中輸入“perfmon”,然後單擊“確定”。 |
• |
在效能監視器工具中,在左側窗格里選擇 System Monitor 物件,然後右擊“效能”圖表。 |
• |
選擇“新增計數器”。 |
現在,可以開始選擇這些物件和要監視的計數器了。
ASP.NET 應用程式效能計數器
有關 ASP.NET 應用程式效能計數器的大部分資訊最近已被合併到一個題為“改善 .NET 應用程式的效能和伸縮性”的綜合文件中。下表描述了一些可用於監視和優化 ASP.NET 應用程式(包括 Reporting Services)效能的重要計數器。
效能物件 | 計數器 | 例項 | 描述 |
Processor(處理器) |
% Processor Time(處理器時間百分比) |
__Total |
“% Processor Time”監視執行 Web 伺服器的計算機的 CPU 利用率。低 CPU 利用率或者無法最大化 CPU 利用率(無論客戶端負載為多少)都表明 Web 應用程式中存在對資源的爭用或鎖定。 |
Process(程式) |
% Processor Time(處理器時間百分比) |
aspnet_wp 或 w3wp(具體情況視 IIS 版本而定) |
由 ASP.NET 工作程式所使用的處理器時間所佔的百分比。在將標準負載情況下的效能與先前捕獲的基準進行對比時,如果此計數器的值出現下降,則說明降低了對處理器的需求,因此也提高了伸縮性。 |
Process(程式) |
Working Set(工作集) |
aspnet_wp 或 w3wp(具體情況視 IIS 版本而定) |
由 ASP.NET 主動使用的記憶體數量。雖然應用程式開發人員對應用程式使用的記憶體數量擁有最大的控制權,但系統管理員也可通過調整會話的超時期限來顯著影響這一點。 |
Process(程式) |
Private Bytes(專有位元組) |
aspnet_wp 或 w3wp(具體情況視 IIS 版本而定) |
Private Bytes 是當前分配給該程式且不能由其他程式共享的記憶體數量(以位元組計)。不時出現的尖峰表明某些地方存在瓶頸,會導致工作程式繼續持有不再需要的記憶體。如果此計數器突然下降為接近 0 的值,則可能表示 ASP.NET 應用程式由於無法預料的問題進行了重啟。為了驗證這一點,請監視“ASP.NET Application Restarts”計數器。 |
ASP.NET Applications(ASP.NET 應用程式) |
Requests/ Sec(每秒的請求數) |
__Total |
允許您檢驗請求的處理速度是否於傳送速度相適應。如果每秒請求數的數值低於每秒產生的請求數,則會出現排隊現象。這通常意味著已經超過了最大請求速度。 |
ASP.NET Applications(ASP.NET 應用程式) |
Errors Total(總錯誤數) |
__Total |
在執行 HTTP 請求期間發生的錯誤總數。包括任何分析器、編譯或執行時錯誤。此計數器是“Errors During Compilation”(編譯錯誤數)、“Errors During Preprocessing”(預處理錯誤數)和“Errors During Execution”(執行錯誤數)計數器的總和。運轉正常的 Web 伺服器不應產生任何錯誤。如果錯誤發生在 ASP.NET Web 應用程式中,它們的存在可能會讓實際的吞吐量結果產生偏差。 |
ASP.NET |
Request Execution Time(請求執行時間) |
|
顯示了呈現所請求頁面並將其傳送給使用者所需的時間(以毫秒計)。跟蹤此計數器通常要比跟蹤頁面呈現時間效果更好。此計數器可以更全面地衡量從開始到結束的整個請求時間。在與基準進行對比時,如果此計數器的平均值較低,則說明應用程式的伸縮性和效能均得到了改善。 |
ASP.NET |
Application Restarts(應用程式重新啟動) |
|
應用程式在 Web 伺服器生存期間發生重新啟動的次數。每次發生 Application_OnEnd 事件時,應用程式的重新啟動次數都會增加。應用程式進行重新啟動的原因可能是:更改了 Web.config 檔案、更改了儲存在應用程式的 \bin 目錄下的程式集、或者 Web Forms 頁面中發生了太多的更改。如果此計數器的值出現意料之外的增加,說明某些不可預知的問題導致 Web 應用程式被關閉。在這種情況下,應該認真調查問題原因。 |
ASP.NET |
Requests Queued(排隊的請求數) |
|
在佇列中等待服務的請求數。如果此數字隨著客戶端負載的增加而呈現線性的增長,則說明 Web 伺服器計算機已經達到了它能夠處理的併發請求極限。此計數器的預設最大值為 5,000。您可以在計算機的 Machine.config 檔案中更改此設定。 |
ASP.NET |
Worker Process Restarts(工作程式重新啟動) |
|
工作程式在伺服器計算機上重新啟動的次數。如果出現意料之外的故障或者被有意回收,則工作程式會重新啟動。如果此計數器的值出現意料之外的增加,應認真調查問題原因。 |
除了上表中介紹的這些核心監視要素之外,在您試圖診斷 ASP.NET 應用程式具有的特定效能問題時,下表中的效能計數器也可對您有所幫助。
效能物件 | 計數器 | 例項 | 描述 |
ASP.NET Applications(ASP.NET 應用程式) |
Pipeline Instance Count(管線例項計數) |
__Total |
指定 ASP.NET 應用程式的活動請求管線例項的數量。由於只有一個執行執行緒可以在管線例項內執行,所以此數值反映了為特定應用程式處理的併發請求的最大數量。大多數情況下,在存在負載的情況下此數值較低為佳,這表明處理器得到了很好的利用。 |
.NET CLR Exceptions(.NET CLR 異常) |
# of Exceps Thrown(引發的異常數) |
|
顯示應用程式中引發的異常數。如果此數值出現意料之外的增加,說明可能存在效能問題。如果僅僅存在異常,則並不需要擔心,因為異常對於某些程式碼路徑來說是正常工作的一部分。例如,HttpResponse.Redirect 方法通過引發一個不可捕獲的異常 ThreadAbortException 來完成工作。同樣,對 ASP.NET 應用程式跟蹤此計數器也更加有用。使用“Errors Total”計數器確定該異常是否將導致應用程式出現意料之外的錯誤。 |
System(系統) |
Context Switches/ sec(每秒的上下文切換次數) |
|
測量 Web 伺服器計算機上所有處理器切換執行緒上下文的速度。如果此計數器的值很高,可能表示對鎖的爭用頻繁發生,或者線上程的使用者模式和核心模式之間切換頻繁。使用取樣優化程式和其他工具執行進一步調查可證實上述猜測。 |
Reporting Services 效能計數器
Reporting Services 包括一組它自己的效能計數器,用於收集有關報告處理和資源消耗方面的資訊。可通過 Windows 效能監視器工具中出現的兩個物件來監視例項和元件的狀態和活動:MSRS 2005 Web Service 和 MSRS 2005 Windows Service 物件。
MSRS 2005 Web Service 效能物件包括一組用來跟蹤 Report Server 處理過程的計數器,這些處理過程通常通過線上互動式報告瀏覽操作而引發。這些計數器在 ASP.NET 停止該 Web 服務後被重設。下表列出了可用於監視 Report Server 效能的計數器,並描述了它們的目的。
效能物件:RS Web Service
計數器 | 描述 |
Active Sessions(活動會話數) |
活動會話的數量。此計數器反映了尚未過期的所有瀏覽器會話總數。這並不是同時處理的請求數,而是儲存在 ReportServerTempDB 資料庫中的會話數量。 |
Cache Hits/Sec(每秒快取命中次數) |
每秒從目錄中取得的報告請求的數量。如果此值增加,而“Memory Cache Hits”的值不增加,則說明報告資料沒有被重新處理,但是頁面被重新呈現。將此計數器與 Memory Cache Hits/Sec 計數器一同使用,可以確定用於快取、磁碟或記憶體的資源是否充足。 |
Cache Misses/Sec(每秒快取未命中數) |
每秒未能從目錄中(與記憶體中相對)返回報告的請求數量。將此計數器與 Memory Cache Misses/Sec 計數器一同使用,可以確定用於快取、磁碟或記憶體的資源是否充足。 |
First Session Requests/Sec(每秒的首次會話請求數) |
每秒中從 Report Server 快取中啟動的新的使用者會話數量。 |
Memory Cache Hits/Sec(每秒記憶體快取命中數) |
每秒中從記憶體中的快取裡取得報告的次數。記憶體中快取是 Reporting Services 快取的一部分,用於在記憶體或臨時檔案中儲存已呈現過的報告。這樣可以為請求提供最佳的效能,因為無需執行任何處理工作。如果使用記憶體中快取,報告伺服器將不會通過查詢 SQL Server 來獲得快取的內容。 |
Memory Cache Misses/Sec(每秒記憶體快取未命中數) |
每秒中未能從記憶體中的快取裡取得報告的次數。 |
Next Session Requests/Sec(每秒的下一次會話請求) |
每秒在現有會話中請求開啟報告的次數。 |
Report Requests(報告請求) |
當前處於活動狀態並且將由 Report Server 進行處理的報告數量。 |
Reports Executed/Sec(每秒執行的報告數) |
每秒成功執行的報告的數量。此計數器提供了有關報告處理量的統計資訊。綜合使用此計數器和 Request/Sec,比較可從快取中返回的報告請求的執行情況。 |
Requests/Sec(每秒的請求數) |
每秒向 Report Server 發出的請求數。此計數器跟蹤由 Report Server 處理的所有型別的請求。 |
Total Cache Hits(快取命中總數) |
自服務啟動以來,從快取中獲得報告的請求總數。此計數器在 ASP.NET 停止該 Web 服務後被重設。 |
Total Cache Misses(總的快取未命中數) |
自服務啟動以來,不能從快取中獲得報告的總次數。此計數器在 ASP.NET 停止該 Web 服務後被重設。可使用此計數器確定磁碟空間和記憶體是否充足。 |
Total Memory Cache Hits(總的記憶體快取命中數) |
自服務啟動以來,從記憶體中快取裡返回的已快取報告的總數。此計數器在 ASP.NET 停止該 Web 服務後被重設。記憶體中快取是在 CPU 記憶體中儲存報告的那部分快取。如果使用記憶體中快取,報告伺服器將不會通過查詢 SQL Server 來獲得快取的內容。 |
Total Memory Cache Misses(總的快取未命中數) |
自服務啟動以來,針對記憶體中快取的快取未命中總數。此計數器在 ASP.NET 停止該 Web 服務後被重設。 |
Total Processing Failures(處理故障總數) |
自服務啟動以來,發生的所有報告處理故障的總數。此計數器在 ASP.NET 停止該 Web 服務後被重設。處理故障可能來自報告處理器,也可能來自任何擴充套件。 |
Total Reports Executed(執行的報告總數) |
自服務啟動以來得到成功執行的報告的總數。 |
Total Requests(總請求數) |
自服務啟動以來,向 Report Server 傳送的所有請求的總數。 |
RS Windows Service 效能物件包括一組用於跟蹤報告處理過程的計數器,這些處理過程是通過預定操作而引發的。預定操作可能包括訂閱和交付、報告執行快照以及報告歷史。微軟的工作負載中並不包含任何預定操作或交付操作,此處列出這些效能計數器僅是便於您進行參考。
可使用此效能物件監視 Report Server Windows 服務。如果您準備在一個橫向伸縮配置中執行 Report Server,那麼這些計數器應用於所選的伺服器,而不是應用於橫向伸縮配置整體。這些計數器在應用程式域回收之時將被重設。下表列出了可用於監視預定和交付操作的計數器,並描述了它們的目的。
效能物件:RS Windows Service
計數器 | 描述 |
Cache Flushes/Sec(每秒快取重新整理次數) |
每秒重新整理快取的次數。 |
Cache Hits/Sec(每秒快取命中數) |
每秒獲取到快取報告的請求數量。 |
Cache Misses/Sec(每秒快取未命中數) |
每秒未能從快取中獲得報告的請求的數量。 |
Delivers/Sec(每秒交付數) |
每秒從各種交付擴充套件交付的報告的數量。 |
Events/Sec(每秒事件數) |
每秒處理的事件數量。被監視的事件,包括 SnapshotUpdated 和 TimedSubscription。 |
Memory Cache Hits/Sec(每秒記憶體快取命中數) |
每秒中從記憶體中的快取裡取得報告的次數。 |
Memory Cache Misses/Sec(每秒記憶體快取未命中數) |
每秒中未能從記憶體中的快取裡取得報告的次數。 |
Report Requests(報告請求數) |
當前處於活動狀態並且將由 Report Server 進行處理的報告數量。可使用此計數器評估快取策略。向特定呈現擴充套件提交的請求數。請求的數量可能比執行的報告數量多許多。 |
Reports Executed/Sec(每秒執行的報告數) |
每秒成功執行的報告的數量。 |
Snapshot Updates/Sec(每秒快照更新數) |
每秒報告執行快照的預定更新數量。 |
Total App Domain Recycles(應用程式域回收總數) |
自服務啟動以來回收的應用程式域總數。 |
Total Cache Flushes(快取重新整理總數) |
自服務啟動以來,Report Server 的快取更新總數。 |
Total Cache Hits(快取命中總數) |
自服務啟動以來,從快取中獲得報告的請求總數。 |
Total Cache Misses(總的快取未命中數) |
自服務啟動以來,不能從快取中獲得報告的總次數。 可使用此計數器確定是否需要更多磁碟空間或記憶體。 |
Total Deliveries(總交付數) |
由 Scheduling and Delivery Processor 交付的報告總數(對於所有交付擴充套件)。 |
Total Events(總事件數) |
自服務啟動以來發生的事件的總數。 |
Total Memory Cache Hits(總的記憶體快取命中數) |
自服務啟動以來,從記憶體中快取裡返回的已快取報告的總數。 |
Total Memory Cache Misses(總的快取未命中數) |
自服務啟動以來,針對記憶體中快取的快取未命中總數。 |
Total Processing Failures(處理故障總數) |
自服務啟動以來,發生的所有報告處理故障的總數。處理故障可能來自報告處理器,也可能來自任何擴充套件。 |
Total Rejected Threads(被拒絕的執行緒總數) |
拒絕執行非同步處理後在同一執行緒中作為同步過程在以後進行處理的資料處理執行緒總數。 |
Total Report Executions(報告執行總數) |
已執行報告的總數。 |
Total Requests(請求總數) |
自服務啟動以來得到成功執行的報告的總數。 |
Total Snapshot Updates(快照更新總數) |
自服務啟動以來,報告執行快照進行更新的總數。 |
如果您打算排除 Reporting Services 存在的效能問題,記錄以下效能計數器通常很有幫助:ASP.NET、ASP.NET Applications、Process、System、Memory、Physical Disks、.NET Exceptions、.NET Memory、.NET Loading、.NET CLR Locks and Threads 以及 .NET CLR Data。
可選的 Reporting Services 效能計數器
以下列出了一些適用於 RS Web Service 但在預設情況下並未安裝的效能計數器。但是,在執行效能優化工作時,可以通過這些計數器來改善您洞察效能的能力。為實現這個目的,請在命令提示符中執行以下語句:
installutil.exe /u ReportingServicesLibrary.dll
然後再執行:
installutil.exe ReportingServicesLibrary.dll
為了成功執行該語句,您可能首先需要修改您的路徑,在路徑中包含 Microsoft .NET Framework 的安裝目錄。在路徑修改完畢後,請從包含 ReportingServicesLibrary.dll 檔案的目錄下執行先前語句。預設情況下,該檔案安裝在 C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.instance\Reporting Services\ReportServer\bin 目錄下。這些計數器沒有進行徹底的本地化。
Active Database Connections(活動資料庫連線) |
某個時間處於活動狀態的資料庫連線的數量。只統計指向 Report Server 目錄的連線。 |
Active Datasource Connections(活動資料來源連線) |
某個時間處於活動狀態的資料庫連線的數量。只統計由當前執行的報告開啟的資料來源連線。 |
Active Threads(活動執行緒) |
當前處於活動狀態的執行緒數量。在 Web 服務中,它包含一些為請求提供服務的執行緒。在交付服務中,它包含工作執行緒以及維護和輪詢執行緒。 |
Byte count(位元組計數) |
對於上一次請求,在呈現當前報告時向客戶端返回的位元組數量。這與對應的執行日誌條目相類似。 |
Row Count(行計數) |
對於上一次請求,由當前報告返回的行的數量。這與對應的執行日誌條目相類似。 |
Time in Compression(壓縮時間) |
對於上一次請求,在快照和 PDF 報告壓縮上花費的時間(以毫秒計)。 |
Time in data source access(資料來源訪問時間) |
對於上一次請求,在獲取報告的資料來源資訊上花費的時間(以毫秒計)。其中包括執行查詢和取回結果所需的時間。這與對應的執行日誌條目相類似。 |
Time in database(資料庫時間) |
對於上一次請求,在獲取 Report Server 目錄資訊上花費的時間(以毫秒計)。 |
Time in processing(處理時間) |
對於上一次請求,在報告處理上花費的時間(以毫秒計)。這與對應的執行日誌條目相類似。 |
Time in rendering(呈現時間) |
對於上一次請求,在呈現報告上花費的時間(以毫秒計)。這與對應的執行日誌條目相類似。 |