Condividi tramite


Risoluzione dei problemi di latenza di MessageBox

In teoria, tutti i messaggi dovrebbero essere elaborati e consegnati non appena vengono pubblicati nel database MessageBox e quest'ultimo non dovrebbe mai raggiungere dimensioni eccessive. Qualsiasi messaggio presente nel database MessageBox a cui non sono più associati riferimenti dovrebbe essere immediatamente rimosso dai processi dell'agente SQL che periodicamente puliscono le tabelle del database MessageBox.

Nella pratica, tuttavia, la ricezione dei messaggi non avviene in genere in modo prevedibile e lineare e i processi dell'agente SQL impiegano del tempo per pulire le tabelle del database MessageBox.

Può quindi accadere che il database MessageBox raggiunga dimensioni notevoli in poco tempo.

Di seguito sono elencati i fattori che possono causare la crescita eccessiva del database MessageBox e compromettere le prestazioni generali:

  • L'istanza host Biztalk con il set di opzioni "consenti rilevamento host" viene arrestato. Si tratta dell'host responsabile dello spostamento dei dati di rilevamento dal database MessageBox al database di rilevamento BizTalk (BizTalkDTADb).

  • SQL Server Agent non è in esecuzione Questo può verificarsi se i processi SQL responsabili dello spostamento dei dati dal database MessageBox al database BizTalkDTADb [successivamente l'eliminazione dei dati spostati in MessageBox] non vengono eseguiti. Per evitare questo problema è necessario che il servizio SQL Agent sia sempre in esecuzione.

  • SQL Server Processi sono disabilitati Anche se l'SQL Server Agent è in esecuzione, è imperativo che nessuno dei processi di SQL Server predefiniti sia disabilitato.

  • Il database BizTalkDTADb aumenta eccessivamente Ciò può verificarsi se il database BizTalkDTADb aumenta molto di grandi dimensioni, causando l'inserimento nel database BizTalkDTADb che richiede più tempo. In questi casi lo spostamento dei dati da parte di TDDS (Tracking Data Delivery Service) subisce un rallentamento, causando la creazione di un backlog nel database MessageBox. Per evitare il problema, è importante eseguire l'archivio del server SQL e cancellare periodicamente i processi dal database BizTalkDTADb.

  • Latenza eccessiva di I/O del disco Se la frequenza in ingresso dei dati nel database MessageBox è più veloce rispetto alla quale il sistema può elaborare e spostare i dati nel database BizTalkDTADb, il backlog può essere compilato nel database MessageBox. Se il backlog continua a crescere in maniera esponenziale, si tratta di un problema grave che col tempo influisce negativamente sulle prestazioni. Per tentare di risolvere il problema, installare dischi più veloci e/o aggiornare l'hardware per consentire al sistema di eseguire il ripristino da backlog di messaggi verificatisi nel tempo.

Piano di manutenzione del database

Anche se vengono adottate tutte le misure e precauzioni descritte sopra, col tempo il volume dei dati di rilevamento nel database BizTalkDTADb diventa elevato. Per questo motivo è importante implementare un piano di manutenzione del database per l'archiviazione periodica dei dati di rilevamento in modo da garantire sempre prestazioni ottimali del sistema.

La quantità di dati cronologici che può essere mantenuta nel database BizTalkDTADb dipende dal volume dei messaggi inviati al sistema. Per i sistemi che non sono soggetti a elevati livelli di traffico e velocità, le dimensioni del database cresceranno meno rapidamente e sarà possibile mantenere un numero maggiore di dati cronologici nel database BizTalkDTADb.

Per non sacrificare le prestazioni di runtime, è consigliabile mantenere nel database BizTalkDTADb una quantità minima di dati.