查询池队列长度

Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.QueryPoolQueueLength (UnitMonitor)

当 SSAS 实例的查询池队列的大小大于配置的阈值时,监视器将发出警报。

Knowledge Base article:

摘要

当查询池作业队列的大小超过配置的阈值时,监视器将发出警报。队列可以表示部分请求可能会因等待来自池的自由线程而无法执行,即使作业可以快速执行和返回。

原因

来自查询池的可用线程可能会因多种原因耗尽,这些原因包括影响池的服务器设置配置错误,或者实例上的用户需求或计划作业异常高。

解决方法

解决此警报要求管理员了解并考虑多种因素,包括(但不限于)工作负荷要求、用户和作业计划、服务器计算机上的其他计划进程以及可用的资源。当查询池作业队列的大小超过配置的阈值时,修复此状况的操作包括以下任意操作:

外部

在 Analysis Services 中配置服务器属性

SSAS 多维性能指南

可替代参数

名称

说明

默认值

已启用

启用或禁用工作流

生成警报

定义工作流是否生成警报

间隔(秒)

运行工作流的重复间隔时间(秒)。

900

样本数

如果阈值违反次数大于或等于最小违反次数,运行状况将发生更改。

4

同步时间

使用 24 小时格式指定的同步时间。可以忽略。

 

警告阈值

如果 Analysis Services 性能计数器超过阈值,运行状况将发生更改。

0

超时(秒)

指定允许工作流在被关闭并标记为失败之前运行的时间。

300

Element properties:

TargetMicrosoft.SQLServer.2008.AnalysisServices.Instance
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.AnalysisServices.MonitorType.PerformanceCounterThreads
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2008: 已超过查询池作业队列长度
SSAS 实例 {1} 在计算机 {0} 上的查询池作业队列长度超过配置的阈值。
当前查询队列长度: {2}
RunAsDefault

Source Code:

<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/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>