バック プレッシャ
製品: Exchange Server 2013
バック プレッシャーは、Microsoft Exchange 2013 メールボックス サーバーとエッジ トランスポート サーバーに存在する Microsoft Exchange トランスポート サービスのシステム リソース監視機能です。
Exchange は、使用可能なハード ドライブの領域やメモリなどの重要なリソースが不足していることを検出し、サービスの利用不可を防ぐためにアクションを実行できます。 バックプレッシャーにより、システム リソースが完全に圧倒されるのを防ぎ、Exchange サーバーは新しいメッセージを受け入れる前に既存のメッセージを処理しようとします。 システム リソースの使用率が通常のレベルに戻ると、Exchange サーバーは通常の操作を徐々に再開し、新しいメッセージの受け入れを再開します。
Exchange 2013 では、メールボックス サーバーまたはエッジ トランスポート サーバー上のトランスポート サービスがリソース不足の場合、受信接続は受け入れられますが、これらの接続経由の受信メッセージは低速で受け入れられるか、拒否されます。 SMTP ホストがリソース不足の Exchange サーバーに接続しようとすると、接続は成功します。 ただし、ホストが MAIL FROM コマンドを発行してメッセージを送信すると、負荷の高いリソースに応じて、トランスポート サービスは MAIL FROM コマンドの受信確認を遅らせるか、接続を拒否します。
監視対象のリソース
背圧機能の一部として、次のシステム リソースが監視されます。
メッセージ キュー データベースを格納するハード ドライブ上の空き領域。
メッセージ キュー データベース トランザクション ログを格納するハード ドライブ上の空き領域。
メモリ内に存在するコミットされていないメッセージ キュー データベース トランザクションの数。
EdgeTransport.exe プロセスで使用されているメモリ。
他のすべてのプロセスで使用されるメモリ。
送信キュー内のメッセージの数。
メールボックス サーバーまたはエッジ トランスポート サーバー上の監視対象のシステム リソースごとに、次の 3 つのレベルのリソース使用率が適用されます。
標準: リソースは使い過ぎません。 サーバーは、新しい接続およびメッセージを受け付けます。
中: リソースが少し使い過ぎです。 バック プレッシャがサーバーに限定的に適用されます。 権限のあるドメイン内の送信者からのメールが流れる可能性があります。 ただし負荷がかかっている特定のリソースによっては、サーバーはタールピットを使用してサーバーの応答を遅らせるか、他のソースから受信する MAIL FROM コマンドを拒否します。
高: リソースが大幅に使い過ぎです。 完全なバック プレッシャが適用されます。 すべてのメッセージ フローが停止し、サーバーはすべての新しい受信 MAIL FROM コマンドを拒否します。
次のセクションでは、特定のリソースが圧迫されている場合に、Exchange が状況を処理する方法について説明します。
メッセージ キュー データベースのハード ドライブ領域を解放する
既定では、メッセージ キュー データベースは %ExchangeInstallPath%TransportRoles\data\Queue に格納されます。 Exchange は、この場所のハード ドライブ領域の使用率を監視します。 ハード ドライブの領域使用率の高レベルは、次の数式を使用して計算されます。
100 * (ハード ディスク サイズ - 固定定数) / ハード ドライブ のサイズ
固定定数の値は 500 メガバイト (MB) です。
この数式の結果は、使用されているハード ドライブ領域の合計に対する割合で表されます。 数式の結果は、常に最も近い整数に切り捨てられます。 既定では、ハード ドライブ使用率の中程度のレベルは、高レベルより 2% 低くなります。 既定では、ハード ドライブ使用率の通常のレベルは、高レベルより 4% 低くなります。
メッセージ キュー データベース トランザクション ログのハード ドライブ領域を解放する
既定では、メッセージ キュー データベース トランザクション ログは %ExchangeInstallPath%TransportRoles\data\Queue に格納されます。 Exchange は、この場所のハード ドライブ領域の使用率を監視します。 %ExchangeInstallPath%Bin\EdgeTransport.exe.config アプリケーション構成ファイルには、既定値が 384 MB の DatabaseCheckPointDepthMax キーが含まれています。 このキーは、ハード ディスク上に存在するコミットされていないすべてのトランザクション ログの許可された合計サイズを制御します。 このキーは、ハード ドライブの使用率を計算する数式で使用されます。
注:
DatabaseCheckPointDepthMax キーの値は、メールボックス サーバーまたはエッジ トランスポート サーバーに存在するすべてのトランスポート関連の拡張可能記憶域エンジン (ESE) データベースに適用されます。 これには、メッセージ キュー データベースと IP フィルター データベースが含まれます。
既定では、ディスク使用率の高レベルは次の式を使用して計算されます。
100 * (ハード ドライブのサイズ - 最小 (5 GB, 3 * DatabaseCheckPointDepthMax)) / ハード ドライブのサイズ
数式の結果は、常に最も近い整数に切り捨てられます。 既定では、ハード ドライブ使用率の中程度のレベルは、高レベルより 2% 低くなります。 ハード ドライブ使用率の通常のレベルは、高レベルより 4% 低くなります。
メモリ内のコミットされていないメッセージ キュー データベース トランザクションの数
メッセージ キュー データベースに加えられた変更の一覧は、それらの変更をトランザクション ログにコミットできるようになるまでメモリ内に保持されます。 その時点で、この一覧はメッセージ キュー データベース自体にコミットされます。 メモリ内に保持されるこれらの未処理のメッセージ キュー データベース トランザクションを、バージョンのバケットと呼びます。 予想以上に大量の受信メッセージ、スパム攻撃、メッセージ キュー データベースの整合性に関する問題、またはハード ドライブのパフォーマンスが原因で、バージョンのバケット数が許容できないほど高いレベルに増加することがあります。
Exchange がメッセージの受信を開始すると、これらのメッセージはバッチにまとめられ、バージョン バケットとして準備されます。 受信メッセージに大きな添付ファイルがある場合は、複数のバッチに分割できます。 処理されるこれらのバッチは、 バッチ ポイントと呼ばれます。 未処理のバッチ ポイントの数が設定されたしきい値を超える可能性があります。特に、大量の受信メッセージが予期せず大量に添付されている場合。
バージョン バケットまたはバッチ ポイントの負荷が高い場合、Exchange サーバーは受信メッセージへの受信確認を遅らせることで、受信接続の調整を開始します。 Exchange では、tarpitting によって受信メッセージ フローの速度が低下します。これにより、 MAIL FROM コマンドに遅延が発生します。 リソースの圧力状態が続くと、Exchange は徐々にターピッティング遅延を増やします。 リソース使用率が正常に戻ると、Exchange は徐々に受信確認の遅延を減らし始め、通常の操作を容易にします。 既定では、Exchange はリソース不足時にメッセージ受信確認の遅延を 10 秒開始します。 リソースが引き続き負荷を受けている場合、遅延は最大 55 秒まで 5 秒単位で増加します。
Exchange では、バージョン バケットとバッチ ポイント リソース使用率の履歴が保持されます。 リソース使用率が特定のポーリング間隔 (履歴の深さと呼ばれる) に対して通常のレベルに低下しない場合、Exchange は tarpitting 遅延を停止し、リソース使用率が正常に戻るまで受信メッセージの拒否を開始します。 既定では、バージョン バケットとバッチ ポイントの履歴の深さは、それぞれ 10 と 300 のポーリング間隔になります。
EdgeTransport.exe プロセスで使用されているメモリ
既定では、EdgeTransport.exe プロセスによる高レベルのメモリ使用率は、次の式を使用して計算されます。
物理メモリ全体の 75% または 1 テラバイトのいずれか小さい方
この計算には、ページング ファイル内のハード ドライブで使用できる仮想メモリや、他のプロセスで使用されるメモリは含まれません。 この数式の結果は、EdgeTransport.exe プロセスで使用されるメモリの合計に対する割合で表されます。 数式の結果は、常に最も近い整数に切り捨てられます。
既定では、EdgeTransport.exe ファイルによる中レベルのメモリ使用率は、物理メモリの合計の 73% または高レベルの値より 2% 小さい方の値として計算されます。 既定では、EdgeTransport.exe ファイルによるメモリ使用率の通常のレベルは、物理メモリの合計の 71% または高レベルの値より 4% 小さい方の値として計算されます。
EdgeTransport.exe プロセスのメモリ使用率が指定された通常のレベルより高い場合、 ガベージ コレクション が強制されます。 ガベージ コレクションは、メモリ内に存在する未使用のオブジェクトをチェックし、それらの未使用のオブジェクトによって使用されるメモリを解放するプロセスです。
Exchange は EdgeTransport.exe プロセスのメモリ使用率の履歴を保持します。 特定のポーリング間隔 (履歴の深さ) の使用率が通常のレベルに下がらない場合、Exchange はリソース使用率が正常に戻るまで受信メッセージの拒否を開始します。 既定では、EdgeTransport.exe のメモリ使用率の履歴の深さは、ポーリング間隔 30 です。
すべてのプロセスで使用されているメモリ
既定では、すべてのプロセスによる高レベルのメモリ使用率は、物理メモリの合計の 94% です。 この値には、ページング ファイル内のハード ドライブで使用できる仮想メモリは含まれません。
指定したメモリ使用率レベルに達すると、 メッセージの退避 が発生します。 メッセージの退避は、メモリにキャッシュされているキューに入っているメッセージの不要な要素を削除する処理です。 パフォーマンスを向上させるために、完全なメッセージがメモリにキャッシュされます。 キューに入っているメッセージの MIME コンテンツをメモリから削除すると、メッセージがメッセージ キュー データベースから直接読み取われるため、待機時間が長くなるのを犠牲にして使用されるメモリが削減されます。 メッセージの退避は、既定で有効になっています。
送信キュー内のメッセージの数
送信キューは、Exchange 2013 メールボックス サーバーとエッジ トランスポート サーバー上のトランスポート サービスに関連付けられます。 カテゴライザーは、送信キュー内の各メッセージを処理します。 この分類により、メッセージが配信キューに入れられます。 詳細については、「 メール フロー と キュー」を参照してください。 送信キューにメッセージが多数ある状態は、カテゴライザーがメッセージを適切に処理できていないことを意味します。
送信キューの負荷が高い場合、Exchange サーバーは受信メッセージへの受信確認を遅らせることで、受信接続の調整を開始します。 Exchange では、tarpitting によって受信メッセージ フローの速度が低下します。これにより、 MAIL FROM コマンドに遅延が発生します。 送信キューの圧力状態が続く場合、Exchange は徐々にターピッティング遅延を増やします。 送信キューの使用率が正常に戻ると、Exchange は徐々に受信確認の遅延を減らし、通常の操作を容易にします。 既定では、送信キューの負荷の下にある場合、Exchange はメッセージ受信確認の遅延を 10 秒開始します。 送信キューが引き続き負荷を受けている場合、遅延は最大 55 秒まで 5 秒単位で増加します。
Exchange は送信キューの使用率の履歴を保持します。 送信キューの使用率が、特定のポーリング間隔 (履歴の深さ) に対して通常のレベルに低下しない場合、Exchange は tarpitting 遅延を停止し、送信使用率が正常に戻るまで受信メッセージの拒否を開始します。 既定では、送信キューの履歴の深さはポーリング 300 回以内です。
Actions taken by Exchange Transport when under resource pressure
次の表は、特定のリソースに負荷がかかっているときに Exchange トランスポートによって実行されるアクションをまとめたものです。
リソースの負荷に対応するときにメールボックスとエッジ トランスポート サーバーによって実行されるバックプレッシャーアクション
圧迫されているリソース | 使用率レベル | 実行された処理 |
---|---|---|
メッセージ キュー データベースのハード ドライブ領域 | 中 |
|
メッセージ キュー データベースのハード ドライブ領域 | 高 |
|
メッセージ キュー データベース トランザクション ログのハード ドライブ領域 | 中 |
|
メッセージ キュー データベース トランザクション ログのハード ドライブ領域 | 高 |
|
バージョン バケット | 中 | 受信メッセージへのタールピット遅延が導入されるか、増加します。 バージョン バケット全体の履歴の深さが通常レベルに達しない場合は、次の処理を実行します。
|
バージョン バケット | 高 | 受信メッセージへのタールピット遅延が導入されるか、増加します。 バージョン バケット全体の履歴の深さが通常レベルに達しない場合は、次の処理を実行します。
|
バッチ ポイント | 中 | 受信メッセージへのタールピット遅延が導入されるか、増加します。 バッチ ポイント履歴の深さ全体に対して標準レベルに達しない場合は、次のアクションを実行します。
|
バッチ ポイント | 高 | 受信メッセージへのタールピット遅延が導入されるか、増加します。 バッチ ポイント履歴の深さ全体に対して標準レベルに達しない場合は、次のアクションを実行します。
|
EdgeTransport.exe プロセスで使用されるメモリ | 中 |
|
EdgeTransport.exe プロセスで使用されるメモリ | 高 |
|
すべてのプロセスで使用されているメモリ | 中 |
|
すべてのプロセスで使用されているメモリ | 高 |
|
送信キュー内のメッセージの数 | 中 | 受信メッセージへのタールピット遅延が導入されるか、増加します。 送信キュー全体の履歴の深さが通常レベルに達しない場合は、次の処理を実行します。
|
送信キュー内のメッセージの数 | 高 | 受信メッセージへのタールピット遅延が導入されるか、増加します。 送信キュー全体の履歴の深さが通常レベルに達しない場合は、次の処理を実行します。
|
Back pressure configuration options in the EdgeTransport.exe.config file
バック プレッシャーのすべての構成オプションは、%ExchangeInstallPath%Bin\EdgeTransport.exe.config XML アプリケーション構成ファイルで使用できます。
警告
これらの設定は参照としてのみ一覧表示されます。 EdgeTransport.exe.config ファイルのバック プレッシャの設定は変更しないことを強くお勧めします。 背圧設定を変更すると、パフォーマンスが低下したり、データが失われたりする可能性があります。 発生するバック プレッシャ イベントは、すべて根本原因を調べて修正することをお勧めします。
背圧構成オプション
キーの名前 | 既定値 |
---|---|
EnableResourceMonitoring | true |
ResourceMonitoringInterval |
00:00:02 (2 秒) |
PercentageDatabaseDiskSpaceUsedHighThreshold | 0. この値は、既定の数式が使用されることを示します。 |
PercentageDatabaseDiskSpaceUsedMediumThreshold | 0. この値は、実際の値が PercentageDatabaseDiskSpaceUsedHighThreshold の値より 2% 小さいことを示します。 |
PercentageDatabaseDiskSpaceUsedNormalThreshold | 0. この値は、実際の値が PercentageDatabaseDiskSpaceUsedMediumThreshold の値より 2% 小さいことを示します。 |
PercentageDatabaseLoggingDiskSpaceUsedHighThreshold | 0. この値は、既定の数式が使用されることを示します。 |
PercentageDatabaseLoggingDiskSpaceUsedMediumThreshold | 0. この値は、実際の値が PercentageDatabaseLoggingDiskSpaceUsedHighThreshold の値より 2% 小さいことを示します。 |
PercentageDatabaseLoggingDiskSpaceUsedNormalThreshold | 0. この値は、実際の値が PercentageDatabaseLoggingDiskSpaceUsedMediumThreshold の値より 2% 小さいことを示します。 |
PercentagePrivateBytesUsedHighThreshold | 0. この値は、既定の計算が使用されることを示します。 |
PercentagePrivateBytesUsedMediumThreshold | 0. この値は、実際の値が PercentagePrivateBytesUsedHighThreshold の値より 2% 小さいことを示します。 |
PercentagePrivateBytesUsedNormalThreshold | 0. この値は、実際の値が PercentagePrivateBytesUsedMediumThreshold の値より 2% 小さいことを示します。 |
VersionBucketsHighThreshold | 2500 |
VersionBucketsMediumThreshold | 2000 |
VersionBucketsNormalThreshold | 1750 |
VersionBucketsHistoryDepth | 10 |
BatchPointHighThreshold | 4000 |
BatchPointMediumThreshold | 2000 |
BatchPointNormalThreshold | 1000 |
BatchPointHistoryDepth | 300 |
BatchPointUseCostForPressure | true |
BatchPointBatchSize | 40 |
BatchPointBatchTimeout |
00:00:00.100 (0.1 秒) |
BatchPointItemExpiryInterval |
00:05:00 (5 分) |
SMTPBaseThrottlingDelayInterval | 00:00:00 |
SMTPMaxThrottlingDelayInterval |
00:00:55 (55 秒) |
SMTPStepThrottlingDelayInterval |
00:00:05 (5 秒) |
SMTPStartThrottlingDelayInterval |
00:00:10 (10 秒) |
PercentagePhysicalMemoryUsedLimit | 94 |
DehydrateMessagesUnderMemoryPressure | true |
PrivateBytesHistoryDepth | 30 |
SubmissionQueueHighThreshold | 10000 |
SubmissionQueueMediumThreshold | 4000 |
SubmissionQueueNormalThreshold | 2000 |
SubmissionQueueHistoryDepth | 300 |
バック プレッシャのログ情報
次の一覧は、Exchange の特定のバック プレッシャ イベントによって生成されるイベント ログ エントリに関する説明です。
リソース使用率レベルが増加した場合のイベント ログ エントリ
イベントの種類: エラー
イベント ソース: MSExchangeTransport
イベント カテゴリ: リソース マネージャー
イベント ID: 15004
説明: リソースの負荷が 以前の使用率レベル から 現在の使用率レベルに増加しました。
リソース使用率レベルが減少した場合のイベント ログ エントリ
イベントの種類: 情報
イベント ソース: MSExchangeTransport
イベント カテゴリ: リソース マネージャー
イベント ID: 15005
説明: リソースの負荷が 以前の使用率レベル から 現在の使用率レベルに減少しました。
利用可能なディスク領域が著しく不足した場合のイベント ログ エントリ
イベントの種類: エラー
イベント ソース: MSExchangeTransport
イベント カテゴリ: リソース マネージャー
イベント ID: 15006
説明: Microsoft Exchange Transport サービスは、利用可能なディスク領域が構成されたしきい値を下回るため、メッセージを拒否しています。 運用を続けるには、サービスの空きディスク領域を増やすための管理操作が必要な場合があります。
利用可能なメモリが著しく不足した場合のイベント ログ エントリ
イベントの種類: エラー
イベント ソース: MSExchangeTransport
イベント カテゴリ: リソース マネージャー
イベント ID: 15007
説明 : Microsoft Exchange Transport サービスが、構成されているしきい値を超えるメモリ量を消費し続けているため、このサービスはメッセージの送信を拒否しています。 これにより、通常の運用を続けるには、このサービスを再起動する必要がある場合があります。