当 SSAS 实例的查询池队列的大小大于配置的阈值时,监视器将发出警报。
当查询池作业队列的大小超过配置的阈值时,监视器将发出警报。队列可以表示部分请求可能会因等待来自池的自由线程而无法执行,即使作业本身可以快速执行和返回。
来自查询池的可用线程可能会因多种原因耗尽,这些原因包括影响池的服务器设置配置错误,或者实例上的用户需求或计划作业异常高。
解决此警报要求管理员了解并考虑多种因素,包括(但不限于)工作负荷要求、用户和作业计划、服务器计算机上的其他计划进程以及可用的资源。当查询池作业队列的大小超过配置的阈值时,修复此状况的操作包括以下任意操作:
参阅 SSAS 多维性能指南后,修改池配置设置以增加查询池中的可用线程。未经仔细考虑和测试或咨询 Microsoft 技术支持人员,不建议此操作。
通过重新计划作业、修改数据库设计、限制用户查询或拆分工作负荷并将部分工作移动到其他服务器,减少 SSAS 实例上的工作负荷。
通过增加服务器上可动态增加池大小的可用内核数,增加池中的可用线程数。
调整警报的配置阈值,以避免这种状况。
如果服务器无需考虑查询池作业队列,则完全禁用监视器。
名称 | 说明 | 默认值 |
已启用 | 启用或禁用工作流 | True |
生成警报 | 定义工作流是否生成警报 | True |
间隔(秒) | 运行工作流的重复间隔时间(秒)。 | 900 |
样本数 | 如果阈值违反次数大于或等于最小违反次数,运行状况将发生更改。 | 4 |
同步时间 | 使用 24 小时格式指定的同步时间。可以忽略。 |
|
警告阈值 | 如果 Analysis Services 性能计数器超过阈值,运行状况将发生更改。 | 0 |
Target | Microsoft.SQLServer.2008.AnalysisServices.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.2008.AnalysisServices.MonitorType.PerformanceCounterThreads | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.QueryPoolQueueLength" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" Target="SQLAS!Microsoft.SQLServer.2008.AnalysisServices.Instance" TypeID="Microsoft.SQLServer.2008.AnalysisServices.MonitorType.PerformanceCounterThreads" ParentMonitorID="SystemHealth!System.Health.PerformanceState" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.QueryPoolQueueLength.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter1>
<AlertParameter2>$Target/Property[Type="SQLAS!Microsoft.SQLServer.2008.AnalysisServices.ServerRole"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Data/Context/Value$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Healthy" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<PerformanceCounterName>Query pool job queue length</PerformanceCounterName>
<CounterName>Query pool job queue length</CounterName>
<Threshold>0</Threshold>
<SampleCount>4</SampleCount>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>