Questo monitoraggio controlla il tempo di esecuzione giornaliero totale degli agenti di replica, ovvero l'agente di distribuzione, l'agente di lettura log, l'agente di merge, l'agente di lettura coda e l'agente di snapshot, nel server di distribuzione.
Questo avviso calcola il tempo di esecuzione totale di ogni agente di replica per le ultime 24 ore (valore predefinito) e verifica se il tempo totale di esecuzione dell'agente supera la soglia configurata.
Le soglie predefinite generano un avviso in corrispondenza di 3 ore e un avviso critico in corrispondenza di 4 ore.
NOTA: I processi continui non vengono monitorati.
Quando viene replicato un numero elevato di modifiche e comandi, possono verificarsi colli di bottiglia delle prestazioni. Cause comuni dei colli di bottiglia delle prestazioni:
Le prestazioni delle query sul sottoscrittore sono insufficienti a causa di statistiche del database non aggiornate o di indici frammentati.
Contesa di risorse nel sottoscrittore: è possibile che le query di scrittura eseguite dall'agente di replica siano in conflitto con le query di lettura da applicazioni in esecuzione nel database di sottoscrizione.
Latenza di rete
Errori non tracciati a livello dell'agente che vengono registrati solo quando è abilitata la registrazione dettagliata.
Dal monitoraggio processi di SQL Server Management Studio o dal monitoraggio della replica controllare i messaggi di stato degli agenti di replica.
Identificare e ricercare tutte le query con esecuzione lenta nel sottoscrittore.
Assicurarsi che le attività degli agenti di replica non siano rallentate da altri processi nel sottoscrittore. In tal caso, provare a pianificare queste attività in conflitto a orari diversi.
Per assicurarsi che le statistiche siano aggiornate, eseguire la stored procedure sp_updatestats sui database di distribuzione e di sottoscrizione. ( http://msdn.microsoft.com/library/ms173804.aspx)
Assicurarsi che gli indici nel database sottoscrittore non siano fortemente frammentati.
Vedere l'articolo seguente per altre informazioni sulla risoluzione dei problemi di prestazioni della replica: http://technet.microsoft.com/library/ms152522.aspx
Abilitare la registrazione dettagliata per ottenere maggiori informazioni sulle azioni o sugli errori dell'agente di replica specifico: http://support.microsoft.com/kb/312292
Nome | Descrizione | Valore predefinito |
Priorità avviso | Definisce la priorità dell'avviso. | Normale |
Gravità avviso | Definisce la gravità dell'avviso. | Errore |
Abilitato | Abilita o disabilita il flusso di lavoro. | Sì |
Soglia di errore | Soglia di errore | 4 |
Genera avvisi | Definisce se il flusso di lavoro genera un avviso. | Sì |
Intervallo (secondi) | Intervallo di tempo ricorrente in secondi in cui eseguire il flusso di lavoro. | 300 |
Periodo di misurazione (ore) | Periodo di tempo usato per la misurazione (ore) | 24 |
Ora di sincronizzazione | Ora di sincronizzazione |
|
Timeout (secondi) | Specifica il tempo di esecuzione consentito per il flusso di lavoro prima che venga chiuso e contrassegnato come non riuscito. | 200 |
Timeout per la connessione di database (secondi) | Il flusso di lavoro avrà esito negativo e registrerà un evento se non riesce ad accedere al database durante il periodo specificato. | 15 |
Soglia di avviso | Soglia di avviso | 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>