The monitor alerts if the memory consumed by processes other than SSRS does not allow SSRS to allocate the amount of memory prescribed by WorkingSetMinimum setting. The monitor uses the following formula to determine the state:
({WorkingSetMinimum} + {Memory Consumed By Others})*100/{Total Memory} < {Threshold (\%)}
The monitor alerts if the memory consumed by processes other than SSRS does not allow SSRS to allocate the amount of memory prescribed by WorkingSetMinimum setting. The monitor uses the following formula to determine the state:
({WorkingSetMinimum} + {Memory Consumed By Others})*100/{Total Memory} < {Threshold (%)}
Reporting services may require lots of memory for variety of reasons, some of them are as follows:
High load – many on-demand/subscriptions requests are served by the report server
Complex reports and reports that display lots of data are requested
Memory pressure conditions may occur if there are other memory consuming applications running on the same server.
You may consider adding more memory to the server, or removing other applications from the server.
The following article provides information about memory configuration for the Reporting Services: -
Configure Available Memory for Report Server Applications
Configure server properties in the Reporting Services: Configure a Report Server (Reporting Services Native Mode)
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 | Health State changes if the number of threshold breaches is greater than or equal to the Minimum Number of Breaches. | 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 |
Target | Microsoft.SQLServer.ReportingServices.Windows.Instance | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.ReportingServices.Windows.MonitorType.Instance.MemoryUsageOnServer | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<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>