次の方法で共有


BizTalk Serverの Low-Latency シナリオの最適化

既定では、BizTalk Serverは低待機時間ではなくスループット用に最適化されています。 このガイドで使用するテスト シナリオのBizTalk Serverには、次の最適化が適用されました。

Note

これらの最適化により待機時間は向上しますが、全体的なスループットに多少のコストがかかる場合があります。

BizTalk Server ホスト内部メッセージ キュー のサイズを増やす

各 BizTalk ホストには、独自の内部メモリ内キューがあります。 待機時間の短いシナリオのパフォーマンスを向上させるために、このキューのサイズを既定値の 100 から 1000 に増やします。 内部メッセージ キュー サイズの値の変更の詳細については、 のBizTalk Serverヘルプhttps://go.microsoft.com/fwlink/?LinkID=120225の「既定のホスト調整設定を変更する方法」を参照してください。

BizTalk Server管理データベースのadm_ServiceClass テーブルの MaxReceiveInterval 値を減らします

BizTalk Serverは、ポーリング メカニズムを使用して、メッセージ ボックス内のホスト キューからメッセージを受信します。 BizTalk 管理 (BizTalkMgmtDb) データベースのadm_ServiceClass テーブルの MaxReceiveInterval 値は、各 BizTalk ホスト インスタンスが MessageBox をポーリングするまで待機する最大値 (ミリ秒単位) です。 adm_ServiceClass テーブルには、次のサービスの種類のレコードが含まれています。

  • XLANG/S – BizTalk オーケストレーション ホスト インスタンスの場合

  • Messaging InProcess – インプロセス ホスト インスタンス用

  • MSMQT – MSMQT アダプター ホスト インスタンスの場合

  • Messaging Isolated – HTTP、SOAP、および特定の WCF 受信アダプター ハンドラーによって使用されるプロセス外のホスト インスタンスの場合

既定では、この値は 500 ミリ秒に設定されています。これは、低待機時間ではなくスループット用に最適化されています。 特定のシナリオでは、この値を減らすことで待機時間を改善できます。

Note

この値の変更は、関連付けられているサービスの種類のすべてのインスタンスに影響するため、この値を変更する前にすべてのホスト インスタンスへの影響を評価するように注意してください。

この値は、メッセージ ボックスに未処理のメッセージが残っていない場合にのみ使用されます。 メッセージ ボックスに未処理のメッセージの一定のバックログがある場合、BizTalk Serverはポーリングの遅延を待たずにメッセージの処理を試みます。 すべてのメッセージが処理されると、BizTalk Serverは MaxReceiveInterval に指定された値を使用してポーリングを開始します。

メッセージ ボックス データベース インスタンスに対するホスト インスタンスの比率が高いBizTalk Server環境では、MaxReceiveInterval の値を小さくすると、メッセージ ボックス データベース インスタンスを格納するSQL Server コンピューターで CPU 使用率が過剰になる可能性があります。 たとえば、1 つのメッセージ ボックスと > 50 個のホスト インスタンスを持つBizTalk Server環境で MaxReceiveInterval が低い値 (<100) に減少した場合、SQL Serverの CPU 使用率が 50% を超える可能性があります。 この現象は、ホスト キューの継続的なポーリングに関連するオーバーヘッドが大きいために発生する可能性があります。 MaxReceiveInterval を 100 未満の値に減らす場合は、SQL Server コンピューターの CPU 使用率に与える影響も評価する必要があります。