其他項目所耗用的記憶體

Microsoft.SQLServer.2014.ReportingServices.UnitMonitor.Instance.MemoryUsageOnServer (UnitMonitor)

此監視器會在非 SSRS 處理序的記憶體使用量已不允許 SSRS 配置 WorkingSetMinimum 設定所指定的記憶體量時發出警示。此監視器會使用下列公式判斷此狀態:
({WorkingSetMinimum} + {其他項目的記憶體使用量})*100/{記憶體總計} < {臨界值 (\%)}

Knowledge Base article:

摘要

此監視器會在非 SSRS 處理序的記憶體使用量已不允許 SSRS 配置 WorkingSetMinimum 設定所指定的記憶體量時發出警示。此監視器會使用下列公式判斷此狀態:

({WorkingSetMinimum} + {其他項目所耗用的記憶體})*100/{記憶體總計} < {臨界值 (%)}

原因

Reporting Services 可能會因多種不同的原因而需要大量記憶體。以下列出其中一部分原因:

同一部伺服器上如有其他應用程式也同樣會耗用大量記憶體,即可能發生記憶體壓力狀況。

解決方式

您可以考慮為伺服器增加更多的記憶體,或從伺服器移除其他應用程式。

下列文章提供 Reporting Services 的記憶體組態相關資訊 -

設定報表伺服器應用程式的可用記憶體

在 Reporting Services 中設定伺服器屬性: 設定伺服器屬性

可覆寫的參數

名稱

描述

預設值

已啟用

啟用或停用工作流程

產生警示

定義工作流程是否會產生警示

間隔 (秒)

執行工作流程的週期性時間間隔 (秒)。

900

範例數

若違反臨界值的次數大於或等於 [違反數目下限],健全狀況狀態會隨之變更。

4

同步處理時間

使用 24 小時制指定的同步處理時間。將會忽略。

 

臨界值

此監視器會在非 SSRS 處理序的記憶體使用量與 WorkingSetMinimum 值的總和,佔伺服器記憶體總計的百分比超出臨界值時發出警示。

100

逾時 (秒)

指定允許工作流程在關閉且標示為失敗之前執行的時間。

300

Element properties:

TargetMicrosoft.SQLServer.2014.ReportingServices.Instance
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2014.ReportingServices.MonitorType.Instance.MemoryUsageOnServer
RemotableTrue
AccessibilityPublic
Alert Message
SSRS 2014: 其他處理序使用太多記憶體
其他處理序可能會影響 SSRS 的效能。
伺服器的記憶體總計: {0} GB
SSRS WorkingSetMinimum: {1} GB
SSRS WorkingSetMaximium: {2} GB
SSRS 的記憶體使用量: {3} GB ({4}\%)
其他處理序的記憶體使用量: {5} GB ({6}\%)
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2014.ReportingServices.UnitMonitor.Instance.MemoryUsageOnServer" Accessibility="Public" Enabled="true" Target="SQLRS!Microsoft.SQLServer.2014.ReportingServices.Instance" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2014.ReportingServices.MonitorType.Instance.MemoryUsageOnServer" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.ReportingServices.UnitMonitor.Instance.MemoryUsageOnServer.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='TotalPhysicalMemoryGB']$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='WorkingSetMinimumGB']$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='WorkingSetMaximumGB']$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='MemoryUsageGB']$</AlertParameter4>
<AlertParameter5>$Data/Context/Property[@Name='MemoryUsagePercent']$</AlertParameter5>
<AlertParameter6>$Data/Context/Property[@Name='MemoryUsageByOtherProcessGB']$</AlertParameter6>
<AlertParameter7>$Data/Context/Property[@Name='MemoryUsageByOtherProcessPercent']$</AlertParameter7>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="Success" HealthState="Success"/>
</OperationalStates>
<Configuration>
<Threshold>100</Threshold>
<SampleCount>4</SampleCount>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>