Exchange 2010 管理パックで相関エンジンが大量にメモリと CPU リソースを消費する
こんにちは。Exchangeサポート チームの上地です。
今回は、System Center Operations Manager (以下 SCOM) 2007 で、Exchange 2010 管理パックをご利用いただいている環境にて、相関エンジンのプロセスが大量のメモリを消費してしまう事象をご紹介させていただきます。
Exchange 2010 管理パックの相関エンジン サービス (Microsoft Exchange Monitoring Correlation) は、Exchange サーバーから収集したヘルス状態を基に、最適なアラートを計算して生成します。これは、管理パックによって通知されるアラートの数を大幅に減らす目的で開発された機能になります。
Exchange 管理パックにおいては、Exchange のヘルス状態は、基本的に相関エンジンによって処理をされて、アラートを生成する構造になっています。
* 参考
Title: アラートの相互関係について
Url: https://technet.microsoft.com/ja-jp/library/ee758053%28v=exchg.140%29.aspx?f=255&MSPPError=-2147217396
相関エンジン サービスは、クラスター化することができます。クラスター化することで、相関エンジンを実行する 1 台の管理サーバーがダウンしても、もう一台に切り替わることで、Exchange のヘルス状態に関するアラートを生成することが可能になります。
しかしながら、クラスター化した状態であっても、フェールオーバー開始から終了までの短い間ですが、相関エンジンは一時的に機能しなくなります。
ここで、監視 Exchange ノードが多数存在しており、各サーバーで監視項目を絞っていない場合、各エージェントからは大量のヘルス データが転送されてきて、相関エンジンが機能していない間、相関エンジンによる処理待ちの状態のまま蓄積されてゆきます。
その結果、管理サーバーのフェールオーバーが完了した直後には、相関エンジン サービスのプロセスが、蓄積された大量のヘルスデータを読み込んで処理をするため、メモリと CPU を占有することがあり、場合によってはその他の監視機能も含めて一切の監視が行えない状態が数時間も継続することがあります。
監視ノード数や有効なモニタ数と、事象の継続期間には明確な基準は無く、環境によって異なるものですが、弊社に寄せられた事例では、60 台の Exchange 監視ノードで、管理サーバーのフェールオーバー後 2 時間程度、この状態が継続したという報告がございました。
この事象発生後の対処策は、エージェントから送信されてくるデータを一時的に停止する以外に方法はございません。
つまり、フェールオーバーが発生したら、以下の手順で相関エンジンに処理をさせるデータを削除します。
- 手順
a. すべての Exchange Server 上の System Center Management サービスを停止し、併せて 以下のフォルダ内のファイルを削除する。
C:\Program Files\Microsoft Monitoring Agent\Agent\Health Service State
b. 相関エンジン サービス (Microsoft Exchange Monitoring Correlation) を停止する。
c. 管理サーバー上の System Center Management サービスを再起動する。この際、メモリーを大量に消費している MonitoringHost.exe プロセスも併せて停止することを確認する。
d. 管理サーバーの相関エンジンサービスと、各 Exchange Server の System Center Management サービスを開始する。
なお、この手順を行うと、サーバーで処理しきれていなかったヘルスデータと、管理サーバーに転送していなかったエージェントのデータはすべて削除されます。
このような状況を未然に防ぐためにも、Exchange の監視ノードが多い場合で、クラスター化された相関エンジンを使用している場合は、適宜監視項目の絞り込みや管理グループの分割を計画していただきますようお願いします。
なお、Exchange 2013 管理パックでは、相関エンジンという仕組みが存在しないため、この事象は発生しません。