DB 디스크 읽기 대기 시간

Microsoft.SQLServer.Linux.Monitor.Database.DBDiskReadLatency (UnitMonitor)

데이터베이스 파일을 호스트하는 모든 논리 디스크에서 디스크 읽기 대시 시간을 모니터링합니다.

Knowledge Base article:

요약

데이터베이스 파일을 호스트하는 모든 논리 디스크에서 디스크 읽기 대시 시간을 모니터링합니다.

원인

이 문제는 디스크 병목 현상 또는 디스크 경합으로 인해 발생할 수 있습니다.

해결 방법

이 문제는 다음을 수행하여 해결할 수 있습니다.:

재정의 가능한 매개 변수

이름

설명

기본값

경고 우선 순위

알림 우선 순위를 정의합니다.

높음

경고 심각도

알림 심각도를 정의합니다.

MatchMonitorHealth

위험 임계값

값이 이 임계값을 초과하는 경우 모니터의 상태가 위험으로 변경됩니다.

40

사용

워크플로 사용하거나 사용하지 않도록 설정합니다.

아니요

알림 생성

워크플로에서 알림을 생성하는지 여부를 정의합니다.

간격(초)

워크플로를 실행하는 반복 시간 간격(초)입니다.

900

샘플 수

상태가 변경되기 전 측정된 값이 임계값을 위반한 횟수를 나타냅니다.

6

동기화 시간

24시간 형식으로 지정된 동기화 시간입니다. 생략될 수 있습니다.

 

시간 제한(초)

여기서 지정한 시간 동안 워크플로가 실행된 후 워크플로가 닫히고 실패로 표시됩니다.

300

Element properties:

TargetMicrosoft.SQLServer.Linux.Database
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityHigh
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Linux.MonitorType.Database.DBDiskReadLatency
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL on Linux: DB 디스크 읽기 대기 시간이 낮은 임계값을 초과했습니다.
컴퓨터 "{2}"에 있는 SQL 인스턴스 "{1}"에서 데이터베이스 "{0}"의 디스크 읽기 대기 시간이 임계값을 초과했습니다. 자세한 내용은 "경고 컨텍스트" 탭을 참조하세요.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Linux.Monitor.Database.DBDiskReadLatency" Accessibility="Public" Enabled="false" Target="SqlDiscL!Microsoft.SQLServer.Linux.Database" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Linux.MonitorType.Database.DBDiskReadLatency" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Linux.Monitor.Database.DBDiskReadLatency.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>High</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="OverThreshold" MonitorTypeStateID="OverThreshold" HealthState="Error"/>
<OperationalState ID="UnderThreshold" MonitorTypeStateID="UnderThreshold" HealthState="Success"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<InstanceName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<DatabaseName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</DatabaseName>
<ObjectName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/PerformanceCounterObject$:TransactionLog</ObjectName>
<CounterName>DB Disk Read Latency (ms)</CounterName>
<PerfInstanceName/>
<ValuePropertyName>ReadLatency</ValuePropertyName>
<Threshold>40</Threshold>
<NumSamples>6</NumSamples>
<ConnectionString>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>