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 (\%)}
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 (%)}
Reporting services may require lots of memory for a 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.
Consider adding more memory to the server or removing other applications from the server.
Configure Available Memory for Report Server Applications
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 | 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 |
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>