若是須要在一臺計算機上監視多個 Report Server 實例,能夠同時或單獨監視這些實例。選擇要包括的實例是計數器添加過程的一部分。有關使用 Windows 附帶的性能工具的更多信息,請參見微軟 Windows 產品文檔。數據庫
若要訪問性能工具瀏覽器
• | 從「開始」菜單上選擇「運行」。緩存 |
• | 在「打開」文本框中輸入「perfmon」,而後單擊「肯定」。性能優化 |
• | 在性能監視器工具中,在左側窗格里選擇 System Monitor 對象,而後右擊「性能」圖表。服務器 |
• | 選擇「添加計數器」。併發 |
如今,能夠開始選擇這些對象和要監視的計數器了。異步
有關 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 包括一組它本身的性能計數器,用於收集有關報告處理和資源消耗方面的信息。可經過 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。
如下列出了一些適用於 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(呈現時間) |
對於上一次請求,在呈現報告上花費的時間(以毫秒計)。這與對應的執行日誌條目相相似。 |