Memory consumed by other processes

Microsoft.SQLServer.ReportingServices.Windows.Monitor.Instance.MemoryUsageOnServer (UnitMonitor)

This monitor produces an alert if the amount of memory consumed by non SSRS-related processes is too high and the required amount of memory cannot be allocated as prescribed by the 'WorkingSetMinimum' setting. The monitor uses the following formula to determine the state:
({WorkingSetMinimum} + {Memory Consumed By Others})*100/{Total Memory} < {Threshold (\%)}

Knowledge Base article:

Summary

This monitor produces an alert if the amount of memory consumed by non SSRS-related processes is too high and the required amount of memory cannot be allocated as prescribed by the 'WorkingSetMinimum' setting. The monitor uses the following formula to determine the state:

({WorkingSetMinimum} + {Memory Consumed By Others})*100/{Total Memory} < {Threshold (%)}

Causes

Reporting services may require lots of memory for a variety of reasons. Some of them are as follows:

Memory pressure conditions may occur if there are other memory consuming applications running on the same server.

Resolutions

Consider adding more memory to the server or removing other applications from the server.

External

Configure Available Memory for Report Server Applications

Configure a Report Server (Reporting Services Native Mode)

Overridable Parameters

Name

Description

Default Value

Enabled

Enables or disables the workflow.

Yes

Generates Alerts

Defines whether the workflow generates an Alert.

Yes

Interval (seconds)

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

900

Number of samples

Indicates how many times a measured value should breach a threshold before the state is changed.

4

Synchronization Time

The synchronization time specified by using a 24-hour format. May be omitted.

 

Threshold

The monitor alerts if the sum of memory consumed by processes other than SSRS and value of 'WorkingSetMinimum' expressed as a percentage of total server memory exceeds the threshold.

100

Timeout (seconds)

Specifies the time the workflow is allowed to run before being closed and marked as failed.

300

Element properties:

TargetMicrosoft.SQLServer.ReportingServices.Windows.Instance
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.ReportingServices.Windows.MonitorType.Instance.MemoryUsageOnServer
RemotableTrue
AccessibilityPublic
Alert Message
SSRS: Non SSRS-related processes consume too much memory
Non SSRS-related processes can affect SSRS performance.
Total memory on the server: {0} GB
SSRS WorkingSetMinimum: {1} GB
SSRS WorkingSetMaximium: {2} GB
Memory consumed by SSRS: {3} GB ({4}\%)
Memory consumed by other processes: {5} GB ({6}\%)
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.ReportingServices.Windows.Monitor.Instance.MemoryUsageOnServer" Accessibility="Public" Enabled="true" Target="RsDiscW!Microsoft.SQLServer.ReportingServices.Windows.Instance" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.ReportingServices.Windows.MonitorType.Instance.MemoryUsageOnServer" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.ReportingServices.Windows.Monitor.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>
<ServiceName>$Target/Property[Type="RsDiscW!Microsoft.SQLServer.ReportingServices.Windows.Instance"]/ServiceName$</ServiceName>
<ConfigurationFile>$Target/Property[Type="RsDiscW!Microsoft.SQLServer.ReportingServices.Windows.Instance"]/ConfigurationFile$</ConfigurationFile>
<InstanceVersion>$Target/Property[Type="RsCore!Microsoft.SQLServer.ReportingServices.Core.Instance"]/Version$</InstanceVersion>
<Threshold>100</Threshold>
<SampleCount>4</SampleCount>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>