This monitor reports a warning when the amount of VertiPaq memory consumed by SSAS tabular databases exceeds the 'Warning Threshold' override (specified in GB). In cases when tabular databases consume more VertiPaq memory than it is allowed by the 'Critical Threshold' override (specified in GB), the monitor throws a critical alert.
The amount of VertiPaq memory consumed by SSAS tabular database may grow over time while different portions of data are continuously added from designated data sources.
To be aware of your VertiPaq memory consumption rates, you can use this monitor to track which databases consume most of your VertiPaq capacity.
The monitor reports a warning when the amount of VertiPaq memory consumed by the database exceeds the configured 'Warning Threshold' override expressed as an absolute value in GB.
In cases when tabular databases consume more VertiPaq memory than it is allowed by the 'Critical Threshold' override, the monitor throws a critical alert.
Note that it is recommended to change the default threshold value to some significant number when enabling this monitor.
Database can approach or exceed the VertiPaq Memory setting under some circumstances. In some cases, a single operation requires memory beyond this limit, and despite the server’s best effort to clear memory from other less immediate tasks, allocations may sometimes necessarily exceed the configured limits, or else the operations must be forced to fail.
This can occur while processing large dimensions or fact data, particularly if there are attributes with data types consuming large amounts of space (e.g. long strings, binary data, etc.) present, or if the dimension contains numerous members. In addition, queries executed on the server may cover very large spaces, particularly if multiple dimensions are being cross-joined, or significant calculations are required to derive results for cells not aggregated previously by a wise administrator, or simply not possible to aggregate in advance.
The resolution may vary depending on what has caused high VertiPaq memory consumption. Make sure to thoroughly investigate each occurrence to determine the real causes. There are numerous approaches administrators can use to fix the issue. Upon considering the underlying activity causing the memory usage, requirements for workload on the server, available resources, and other factors, or consulting Microsoft support, you can do the following:
Identify the sessions responsible for the most significant memory allocation and manually terminate them.
Identify the session responsible for the most significant memory allocations and address them on a case-by-case basis to reschedule processing of jobs and reports, pre-allocate with cache warming queries during the periods of lower utilization or by designing specific aggregations in advance to be built during the processing and hence reducing memory consumption by user queries subsequently.
Increase physical memory on the host computer.
Decrease the memory usage by other processes on the host computer, such as instances of the SQL Server relational database engine or other SSAS instances.
Increase the 'Total Memory Limit' setting or configured thresholds for the alert to avoid the condition.
Disable the monitor entirely if the memory usage is not a concern on the server.
Name | Description | Default Value |
Critical Threshold (GB) | The health state changes to 'Critical' when the 'Database VertiPaq Size' performance counter exceeds the value specified in the 'Warning Threshold' override. Make sure to change the default value to some significant number when enabling this monitor. | 0 |
Enabled | Enables or disables the workflow. | No |
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 |
Synchronization Time | The synchronization time specified by using a 24-hour format. May be omitted. |
|
Timeout (seconds) | Specifies the time the workflow is allowed to run before being closed and marked as failed. | 300 |
Warning Threshold (GB) | The health state changes to 'Warning' if the 'Database VertiPaq Size' performance counter exceeds the value specified in the 'Warning Threshold' override but is lower than the 'Critical Threshold' override. Make sure to change the default value to some significant number when enabling this monitor. | 0 |
Target | Microsoft.SQLServer.AnalysisServices.Windows.TabularDatabase | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | False | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.AnalysisServices.Windows.Monitoring.MonitorType.Database.VertipaqMemorySize | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.AnalysisServices.Windows.Monitoring.Monitor.TabularDatabase.VertipaqSize" Accessibility="Public" Enabled="false" Remotable="true" Priority="Normal" Target="SQLAS!Microsoft.SQLServer.AnalysisServices.Windows.TabularDatabase" TypeID="Microsoft.SQLServer.AnalysisServices.Windows.Monitoring.MonitorType.Database.VertipaqMemorySize" ParentMonitorID="SystemHealth!System.Health.PerformanceState" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.AnalysisServices.Windows.Monitoring.Monitor.TabularDatabase.DatabaseVertipaqSize.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type='ASCore!Microsoft.SQLServer.AnalysisServices.Core.Database']/DatabaseName$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='DatabaseVertipaqMemoryGB']$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Above" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Between" HealthState="Warning"/>
<OperationalState ID="Error" MonitorTypeStateID="Below" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ServiceName>$Target/Host/Property[Type='ASCore!Microsoft.SQLServer.AnalysisServices.Core.Instance']/ServiceName$</ServiceName>
<DatabaseName>$Target/Property[Type='ASCore!Microsoft.SQLServer.AnalysisServices.Core.Database']/DatabaseName$</DatabaseName>
<ConnectionString>$Target/Host/Property[Type='ASCore!Microsoft.SQLServer.AnalysisServices.Core.Instance']/ConnectionString$</ConnectionString>
<CriticalThreshold>0</CriticalThreshold>
<WarningThreshold>0</WarningThreshold>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>