이 모니터는 배포자에서 복제 에이전트(배포, 로그 판독기, 병합, 큐 판독기 및 스냅숏)의 총 일일 실행 시간을 모니터링합니다.
이 알림은 지난 24시간(기본값) 동안 각 복제 에이전트의 총 실행 시간을 계산하고, 에이전트의 총 실행 시간이 구성된 임계값을 초과하는지 확인합니다.
기본 임계값은 3시간의 경우 경고를 생성하고, 4시간의 경우 위험을 생성합니다.
참고: 연속 작업은 모니터링되지 않습니다.
복제 중인 변경 내용 및 명령이 많은 경우 성능 병목 현상이 발생할 수 있습니다. 병목 현상의 일반적인 원인은 다음과 같습니다.
오래된 데이터베이스 통계 또는 조각난 인덱스로 인한 구독자 쿼리 성능 저하
구독자의 리소스 경합: 복제 에이전트에서 실행하는 쓰기 쿼리가 구독 데이터베이스에 대해 실행되는 응용 프로그램의 읽기 쿼리와 경합할 수 있습니다.
네트워크 대기 시간
에이전트 수준에서 추적되지 않는 오류(자세한 정보 로깅을 사용하는 경우에만 기록됨)
SQL Server Management Studio의 작업 모니터 또는 복제 모니터에서 복제 에이전트의 진행률 메시지를 확인합니다.
구독자에서 느리게 실행되는 쿼리를 식별하고 조사합니다.
구독자의 다른 프로세스로 인해 복제 에이전트 작업 속도가 저하되지 않는지 확인합니다. 이 경우 이러한 상충되는 작업을 다른 시간대로 예약하는 것이 좋습니다.
배포 및 구독 데이터베이스에 대해 sp_updatestats를 실행하여 통계가 최신 상태인지 확인합니다( http://msdn.microsoft.com/library/ms173804.aspx).
구독하는 데이터베이스의 인덱스가 과도하게 조각나지 않았는지 확인합니다.
복제 성능 문제 해결에 대한 추가 정보는 http://technet.microsoft.com/library/ms152522.aspx 문서에서 확인할 수 있습니다.
특정 복제 에이전트의 동작/오류에 대한 자세한 정보를 가져오려면 자세한 정보 로깅을 사용하도록 설정합니다( http://support.microsoft.com/kb/312292).
이름 | 설명 | 기본값 |
경고 우선 순위 | 알림 우선 순위를 정의합니다. | 보통 |
경고 심각도 | 알림 심각도를 정의합니다. | 오류 |
사용 | 워크플로 사용하거나 사용하지 않도록 설정합니다. | 예 |
오류 임계값 | 오류 임계값 | 4 |
알림 생성 | 워크플로에서 알림을 생성하는지 여부를 정의합니다. | 예 |
간격(초) | 워크플로를 실행하는 반복 시간 간격(초)입니다. | 300 |
측정 기간(시간) | 측정에 사용된 기간(시간) | 24 |
동기화 시간 | 동기화 시간 |
|
시간 제한(초) | 닫히고 실패한 것으로 표시되기 전에 워크플로를 실행할 수 있는 시간을 지정합니다. | 200 |
데이터베이스 연결 시간 제한(초) | 워크플로는 지정된 기간 동안 데이터베이스에 액세스할 수 없으면 실패하며 이벤트를 등록합니다. | 15 |
경고 임계값 | 경고 임계값 | 3 |
Target | Microsoft.SQLServer.Replication.Windows.Distributor | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.Replication.Windows.MonitorType.DistributorAgentsLoad | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Core.RunAs.Monitoring |
<UnitMonitor ID="Microsoft.SQLServer.Replication.Windows.Monitor.ReplicationAgentsLoad" Accessibility="Public" Enabled="true" Target="SQLReplWD!Microsoft.SQLServer.Replication.Windows.Distributor" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Replication.Windows.MonitorType.DistributorAgentsLoad" ConfirmDelivery="false" RunAs="SqlCoreLib!Microsoft.SQLServer.Core.RunAs.Monitoring">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Replication.Windows.Monitor.ReplicationAgentsLoad.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/InstanceName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/ConnectionString$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='LoadHours']$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='Message']$</AlertParameter4>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Health" MonitorTypeStateID="Health" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/MachineName$</MachineName>
<NetbiosComputerName>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/InstanceName$</InstanceName>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<ConnectionString>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/ConnectionString$</ConnectionString>
<MonitoringType>$Target/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<WarningThreshold>3</WarningThreshold>
<ErrorThreshold>4</ErrorThreshold>
<LastHours>24</LastHours>
<CategoryList>Distribution, LogReader, Merge, QueueReader, Snapshot</CategoryList>
<ExcludeCategoryList/>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>200</TimeoutSeconds>
</Configuration>
</UnitMonitor>