Memory consumed by SSRS Instance

Microsoft.SQLServer.2008.ReportingServices.UnitMonitor.Instance.MemoryUsageByInstance (UnitMonitor)

The monitor alerts if the memory usage by the SSRS process is close to the limit defined by WorkingSetMaximum setting.

Knowledge Base article:

Summary

The monitor alerts if the memory usage by the SSRS process is close to the limit defined by WorkingSetMaximum setting.

Causes

Reporting services can consume lots of memory for variety of reasons, some of them being

Resolutions

Following article talks about the memory configuration for reporting services - http://technet.microsoft.com/en-us/library/ms159206.aspx

Configure Server Properties in Reporting Services: Configure Server Properties

Overrideable Parameters

Name

Description

Default Value

Enabled

 

1

Generates Alerts

 

Yes

Interval (seconds)

The recurring interval of time in seconds in which to run the workflow.

900

Warning threshold

The monitor will change its state to warning if the observed value is between warning and critical thresholds.

80

Synchronization Time

 

 

Critical threshold

The monitor will change its state to critical if the observed value exceeds the critical threshold.

90

Element properties:

TargetMicrosoft.SQLServer.2008.ReportingServices.Instance
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.ReportingServices.MonitorType.Instance.MemoryUsageByInstance
RemotableTrue
AccessibilityPublic
Alert Message
SSRS 2008: Memory usage is reaching the limit
Memory used by SSRS ({3} GB) has exceeded the threshold.
WorkingSetMaximum: {2} GB
WorkingSetMinimum: {1} GB.
Total memory on the server: {0} GB
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2008.ReportingServices.UnitMonitor.Instance.MemoryUsageByInstance" Accessibility="Public" Enabled="true" Target="SQLRS!Microsoft.SQLServer.2008.ReportingServices.Instance" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.ReportingServices.MonitorType.Instance.MemoryUsageByInstance" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.ReportingServices.UnitMonitor.Instance.MemoryUsageByInstance.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</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>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Error" MonitorTypeStateID="Above" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="Between" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="Below" HealthState="Success"/>
</OperationalStates>
<Configuration>
<LowerThreshold>80</LowerThreshold>
<UpperThreshold>90</UpperThreshold>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>