目前磁碟佇列長度 (實體磁碟)

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

監視效能計數器 PhysicalDisk\Current Disk Queue Length

Knowledge Base article:

摘要

在多個連續範例中,實體磁碟 “Current Queue Length” 計數器的值持續偏高。 因此,這個實體磁碟上的 I/O 要求延遲很可能會增加。

「目前磁碟佇列長度」是收集效能資料時磁碟上的未處理要求數目。 這表示實體磁碟回應 I/O 要求的速度趕不上提出要求的速度。

原因

實體磁碟最近曾發生活動大幅增加的情況,而且此驟增情況導致活動量超過閾值,或是邏輯磁碟的使用率隨著時間穩定增加,最後達到超過閾值的程度。

另一個可能的原因是基礎實體磁碟或磁碟子系統的某些部分發生問題或設定不正確,因而影響到實體磁碟的效能。

解決方式

若要進一步調查此問題,請考慮採用下列方法:

根據進一步調查的結果,解決方式可能有所不同且可能包括下列其中一種:

Element properties:

TargetMicrosoft.Windows.Server.10.0.PhysicalDisk
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Instance NamePhysicalDisk
Counter NameCurrent Disk Queue Length
Frequency300
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.ConsecutiveSamplesThreshold
RemotableTrue
AccessibilityPublic
Alert Message
實體磁碟目前佇列長度過高
Physical Disk\Current Disk Queue Length 效能計數器已超過閾值。
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.Server.10.0.PhysicalDisk.CurrentDiskQueueLength" Accessibility="Public" Enabled="true" Target="ServervNext!Microsoft.Windows.Server.10.0.PhysicalDisk" 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.PhysicalDisk.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>PhysicalDisk</ObjectName>
<InstanceName>$Target/Property[Type="WindowsServer!Microsoft.Windows.Server.PhysicalDisk"]/PerfmonInstance$</InstanceName>
<Frequency>300</Frequency>
<Threshold>32</Threshold>
<Direction>greaterequal</Direction>
<NumSamples>12</NumSamples>
</Configuration>
</UnitMonitor>