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 使用率に与える影響も評価する必要があります。