バージョン バケットの閾値の変更について (Exchange 2013)

こんにちは。Exchange サポートの山木です。

下記ブログで紹介しているバックプレッシャ機能ですが、Exchange 2013 でも引き続き使用することが可能です。
今回はバック プレッシャ機能で監視する一部システム リソースの閾値が Exchange 2013 CU7 より変更となりましたので具体的な閾値とアップグレードにおける注意点などをご案内致します。

- 参考情報
Title : 外部からのメールが受信できない
URL : https://blogs.technet.com/b/exchangeteamjp/archive/2013/03/14/3558601.aspx

バック プレッシャ機能で監視するシステム リソースの一つとして、バージョン バケットがあります。
バージョン バケットとは、メッセージ キュー データベースに加えられた変更が一時的に格納されるメモリ空間であり、変更 (トランザクション) がデータベースにコミットされることで解放されます。したがいまして、ディスク I/O に遅延が生じている場合や、長時間実行されるようなトランザクションがある場合は、このバージョン バケットの値も増加することとなります。
また、このような状況が発生する具体的な要因といたしましては、一般的に以下のような点が挙げられます。

・ サイズの大きいメッセージがやり取りされた
・ ディスクの処理性能不足
・ Antivirus ソフトの影響
・ 何らかの要因により意図しないメッセージのループが発生した (または一時的にメッセージの流量が増加した)

バージョン バケットの閾値について
==========================================
このバージョン バケットの閾値が Exchange 2013 CU7 以降では下記の通り見直しが行わております。
Exchange 2013 CU6 以前は Exchange 2010 の値を踏襲しておりましたが、Exchange 2013 では Exchange 2010 からアーキテクチャーの大幅な変更が行われ、またパフォーマンスの観点でも大きく向上していることから従来の値では閾値として低すぎると判断し、CU7 にて変更が行われました。

<バージョン バケットの閾値>
Exchange 2013 RTM ~ CU6 : High : 200、Medium : 120、Normal : 80
Exchange 2013 CU7 以降 : High : 2500、Medium : 2000、Normal : 1750

なお、Exchange 2016 ではさらにバージョン バケットの閾値が変更となっております。
詳細は下記 TechNet をご参照いただければと存じます。

- 参考情報
Title : Understanding back pressure
URL : https://technet.microsoft.com/ja-jp/library/bb201658(v=exchg.160).aspx

注意点について
==========================================
これまでと比較して十分に大きな閾値が設定されているため、バックプレッシャ機能によるリソース制限が発生しにくくなっております。
しかしながら、Exchange 2013 CU7 以降の環境でも従来の閾値が適用される場合があり、その結果としてバック プレッシャが発生しメッセージの送受信に影響が出る場合がありますので注意が必要です。具体的には下記の場合となります。

1. 構成ファイルを手動で編集している場合

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
バック プレッシャで監視している各システム リソースの閾値は、下記ディレクトリ配下にある構成ファイル (EdgeTransport.exe.config) にて定義されております。

C:\Program Files\Microsoft\Exchange Server\V15\Bin

Exchange 2013 CU7 以降ではソース コード上で既定値が変更されていますが、構成ファイルを手動で変更している場合は構成ファイルの設定値が優先されます。
そのため、従来の閾値を構成ファイル上で定義している場合には、従来の値が適用されます。旧バージョンで構成ファイルを個別にカスタマイズしている場合などに設定を引き継ぐ目的でファイルを手動で置き換えている際はご注意下さい。

2. Exchange 2013 CU6 以前の環境からアップグレードした場合

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Exchange 2013 CU6 以前の環境からアップグレードした場合に意図的にお客様で構成ファイルを編集していないにも関わらず、従来の閾値が定義されていることがあります。
この要因として、CU のアップグレードを行う際は、旧バージョンの構成ファイルのテンプレート ファイル (EdgeTransport.exe.config.template) と新しいバージョンの EdgeTransport.exe.config ファイルを比較し差分をマージする動作が挙げられます。
Exchange 2013 CU6 以前の テンプレート ファイルには従来の閾値が定義されているため、上記動作の結果としてアップグレード後も構成ファイルに従来の閾値が定義されてしまいます。

本シチュエーションに合致する場合は、まず構成ファイル (EdgeTransport.exe.config) に従来の閾値が定義されていないか確認して下さい。
構成ファイルの <appSettings> セクション内に下記記載があれば従来の閾値が定義されていますので後述します手順にて既定値に戻して頂けますようお願いいたします。

- 記載例
------------------------
    <add key="VersionBucketsHighThreshold" value="200" />
    <add key="VersionBucketsMediumThreshold" value="120" />
    <add key="VersionBucketsNormalThreshold" value="80" />
------------------------

--- 変更手順ここから ---

1. 全てのメールボックス サーバーにて、既定で以下のパスに存在する EdgeTransport.exe.config のバックアップを予め取得します。(ファイル コピーで問題ございません)
C:\Program Files\Microsoft\Exchange Server\V15\Bin

2. オリジナルの EdgeTransport.exe.config をメモ帳で開き、<appSettings> セクション内の以下の箇所を削除します。

    <add key="VersionBucketsHighThreshold" value="200" />
    <add key="VersionBucketsMediumThreshold" value="120" />
    <add key="VersionBucketsNormalThreshold" value="80" />

3. ファイルを保存し、閉じます。
4. Microsoft Exchange Transport サービスを再起動します。
* サービスの再起動中、対象サーバーではメッセージの送受信ができない状況となりますので、この点はご注意いただきますようお願いいたします。

--- 変更手順ここまで ---

今回は以上となりますが、Exchange サーバーを構築、運用いただいている皆様において、少しでも参考になりましたら幸いです。
今後も当ブログおよびサポート チームをよろしくお願いいたします。