ottimizzazioni dello scenario di Low-Latency per BizTalk Server
Per impostazione predefinita, BizTalk Server è ottimizzato per la velocità effettiva anziché per latenza bassa. Le ottimizzazioni seguenti sono state applicate alle BizTalk Server per lo scenario di test usato per questa guida.
Nota
Queste ottimizzazioni migliorano la latenza, ma possono farlo a un certo costo per la velocità effettiva complessiva.
Aumentare le dimensioni della coda dei messaggi interni dell'host BizTalk Server
Ogni host BizTalk ha una propria coda interna in memoria. Aumentare le dimensioni di questa coda dal valore predefinito da 100 a 1000 per migliorare le prestazioni per uno scenario a bassa latenza. Per altre informazioni sulla modifica del valore delle dimensioni interne della coda dei messaggi, vedere "Come modificare le impostazioni di limitazione predefinita dell'host" nella guida di BizTalk Server all'indirizzo https://go.microsoft.com/fwlink/?LinkID=120225.
Ridurre il valore MaxReceiveInterval nella tabella adm_ServiceClass del database di gestione BizTalk Server
BizTalk Server usa un meccanismo di polling per ricevere messaggi dalle code host nella casella di messaggio. Il valore MaxReceiveInterval nella tabella adm_ServiceClass del database BizTalk Management (BizTalkMgmtDb) è il valore massimo in millisecondi che ogni istanza dell'host BizTalk attenderà finché non esegue il polling di MessageBox. La tabella adm_ServiceClass contiene un record per i tipi di servizio seguenti:
XLANG/S : per le istanze dell'host di orchestrazione BizTalk
InProcess di messaggistica : per le istanze host in-process
MSMQT : per le istanze host dell'adapter MSMQT
Messaging Isolated : per le istanze dell'host fuori processo, usate dai gestori di adapter di ricezione HTTP, SOAP e alcuni gestori di adapter di ricezione WCF
Per impostazione predefinita, questo valore è impostato su 500 millisecondi, ottimizzato per la velocità effettiva anziché a bassa latenza. In alcuni scenari la latenza può essere migliorata riducendo questo valore.
Nota
Le modifiche apportate a questo valore influisce su tutte le istanze del tipo di servizio associato, pertanto è necessario valutare l'impatto su tutte le istanze host prima di modificare questo valore.
Questo valore viene utilizzato solo se messagebox non contiene messaggi non elaborati rimanenti. Se è presente un backlog costante di messaggi non elaborati nella casella di messaggio, BizTalk Server tenterà di elaborare i messaggi senza attendere il ritardo del polling. Dopo l'elaborazione di tutti i messaggi, BizTalk Server inizierà il polling usando il valore specificato per MaxReceiveInterval.
In un ambiente BizTalk Server con un rapporto elevato tra istanze host e istanze del database Messagebox, la riduzione del valore per MaxReceiveInterval può causare un utilizzo eccessivo della CPU nel computer SQL Server che ospita l'istanza del database Messagebox. Ad esempio, se MaxReceiveInterval viene ridotto a un valore basso (< 100) in un ambiente BizTalk Server con una singola istanza di Messagebox e > 50 istanze host, l'utilizzo della CPU sul SQL Server può aumentare al di sopra del 50%. Questo fenomeno può verificarsi perché il sovraccarico associato alle code host di polling continuo è significativo. Se si riduce MaxReceiveInterval a un valore minore di 100, è necessario valutare anche l'impatto che ha sull'utilizzo della CPU del computer SQL Server.