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 following formula to determine 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 following formula to determine state:
({WorkingSetMinimum} + {Memory Consumed By Others})*100/{Total Memory} < {Threshold (%)}
Reporting services may require lots of memory for variety of reasons, some of them being
High load – many on-demand/subscriptions requests being served by report server
Complex reports and reports that display lots of data, being 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.
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
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 |
Synchronization Time |
|
|
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 |
Target | Microsoft.SQLServer.2014.ReportingServices.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.2014.ReportingServices.MonitorType.Instance.MemoryUsageOnServer | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<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>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>