当前磁盘队列长度(逻辑磁盘)

Microsoft.Windows.Server.10.0.LogicalDisk.CurrentDiskQueueLength (UnitMonitor)

监视性能计数器 LogicalDisk\Current Disk Queue Length

Knowledge Base article:

摘要

在多次连续采样期间,逻辑磁盘的“Current Queue Length”计数器始终具有高值。 因此,在此逻辑磁盘上,I/O 请求延迟很有可能会增加。

Current Disk Queue Length 是收集性能数据时磁盘上的未完成请求的数目。 这意味着逻辑磁盘无法像提出 I/O 请求那样快速接受这些请求。

原因

逻辑磁盘最近出现活动大量增加的现象,此最大值导致超出了阈值,或者逻辑磁盘的使用率随着时间的推移稳定增大,并且最终达到一个超出阈值的点。

另一种可能就是基本物理磁盘或磁盘子系统的某个部分运行不正常或配置不正确,从而降低了逻辑磁盘的性能。

解决方法

要进一步调查此问题,请考虑:

根据进一步的调查结果,解决方案可能会有所不同,并且可能包含以下其中一项:

Element properties:

TargetMicrosoft.Windows.Server.10.0.LogicalDisk
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Instance NameLogicalDisk
Counter NameCurrent Disk Queue Length
Frequency300
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.ConsecutiveSamplesThreshold
RemotableTrue
AccessibilityPublic
Alert Message
逻辑磁盘当前队列长度太长
已超出 Logical Disk\Current Disk Queue Length 性能计数器的阈值。
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.Server.10.0.LogicalDisk.CurrentDiskQueueLength" Accessibility="Public" Enabled="true" Target="ServervNext!Microsoft.Windows.Server.10.0.LogicalDisk" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="SystemPerf!System.Performance.ConsecutiveSamplesThreshold" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.Server.10.0.LogicalDisk.CurrentDiskQueueLength.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters/>
</AlertSettings>
<OperationalStates>
<OperationalState ID="OverThreshold" MonitorTypeStateID="ConditionTrue" HealthState="Warning"/>
<OperationalState ID="UnderThreshold" MonitorTypeStateID="ConditionFalse" HealthState="Success"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>Current Disk Queue Length</CounterName>
<ObjectName>LogicalDisk</ObjectName>
<InstanceName>$Target/Property[Type="Windows!Microsoft.Windows.LogicalDevice"]/DeviceID$</InstanceName>
<Frequency>300</Frequency>
<Threshold>32</Threshold>
<Direction>greaterequal</Direction>
<NumSamples>12</NumSamples>
</Configuration>
</UnitMonitor>