Low-Latency Szenariooptimierungen für BizTalk Server
Standardmäßig ist BizTalk Server für den Durchsatz und nicht für niedrige Latenz optimiert. Die folgenden Optimierungen wurden auf BizTalk Server für das für dieses Handbuch verwendete Testszenario angewendet.
Hinweis
Diese Optimierungen verbessern die Latenz, können dies jedoch mit einem gewissen Kostenaufwand für den Gesamtdurchsatz tun.
Erhöhen der BizTalk Server internen Nachrichtenwarteschlangengröße des Hosts
Jeder BizTalk-Host verfügt über eine eigene interne In-Memory-Warteschlange. Erhöhen Sie die Größe dieser Warteschlange von dem Standardwert 100 auf 1000, um die Leistung für ein Szenario mit geringer Latenz zu verbessern. Weitere Informationen zum Ändern des Werts der internen Nachrichtenwarteschlangengröße finden Sie unter Ändern der Standardeinstellungen für die Hostdrosselung in der BizTalk Server Hilfe unter https://go.microsoft.com/fwlink/?LinkID=120225.
Reduzieren des MaxReceiveInterval-Werts in der adm_ServiceClass Tabelle der BizTalk Server Verwaltungsdatenbank
BizTalk Server verwendet einen Abfragemechanismus, um Nachrichten von den Hostwarteschlangen im Messagebox-Feld zu empfangen. Der MaxReceiveInterval-Wert in der adm_ServiceClass Tabelle der BizTalk Management-Datenbank (BizTalkMgmtDb) ist der Maximalwert in Millisekunden, den jeder BizTalk-Host instance wartet, bis er das MessageBox-Element abruft. Die adm_ServiceClass Tabelle enthält einen Datensatz für die folgenden Diensttypen:
XLANG/S – für BizTalk-Orchestrierungshostinstanzen
Messaging InProcess – für In-Process-Hostinstanzen
MSMQT – für MSMQT-Adapterhostinstanzen
Isoliertes Messaging : Für Out-of-Process-Hostinstanzen, die von den HTTP-, SOAP- und bestimmten WCF-Empfangsadapterhandlern verwendet werden
Standardmäßig ist dieser Wert auf 500 Millisekunden festgelegt, was für den Durchsatz und nicht für niedrige Latenz optimiert ist. In bestimmten Szenarien kann die Latenz verbessert werden, indem dieser Wert reduziert wird.
Hinweis
Änderungen an diesem Wert wirken sich auf alle Instanzen des zugeordneten Diensttyps aus. Achten Sie daher darauf, die Auswirkungen auf alle Hostinstanzen auszuwerten, bevor Sie diesen Wert ändern.
Dieser Wert wird nur verwendet, wenn das Messagebox keine verbleibenden unverarbeiteten Nachrichten enthält. Wenn im Nachrichtenfeld ein konstanter Backlog nicht verarbeiteter Nachrichten vorhanden ist, versucht BizTalk Server, die Nachrichten zu verarbeiten, ohne auf die Abrufverzögerung zu warten. Nachdem alle Nachrichten verarbeitet wurden, beginnen BizTalk Server mit der Abfrage mit dem für MaxReceiveInterval angegebenen Wert.
In einer BizTalk Server Umgebung mit einem hohen Verhältnis von Hostinstanzen zu Messagebox-Datenbankinstanzen kann die Verringerung des Werts für MaxReceiveInterval zu einer übermäßigen CPU-Auslastung auf dem SQL Server Computer führen, auf dem die Messagebox-Datenbank instance. Wenn der MaxReceiveInterval beispielsweise in einer BizTalk Server Umgebung mit einer einzelnen Messagebox und > 50 Hostinstanzen auf einen niedrigen Wert (< 100) reduziert wird, kann die CPU-Auslastung auf dem SQL Server über 50 % steigen. Dieses Phänomen kann auftreten, weil der Aufwand, der mit der fortlaufenden Abfrage von Hostwarteschlangen verbunden ist, erheblich ist. Wenn Sie MaxReceiveInterval auf einen Wert kleiner als 100 reduzieren, sollten Sie auch die Auswirkungen auswerten, die dies auf die CPU-Auslastung Ihres SQL Server Computers hat.