Windows Server 2008 でデッドロック時のダンプを出力させる

こんにちは。日本マイクロソフトの永野です。

 

弊社クラスター製品には、リソースの操作時にそのリソースの応答を待ち続けることで、

クラスターの動作が停止することを防ぐため、設定されたタイムアウト期間で応答が

得られなかった場合には、デッドロックのような状態が発生したと判断し、リソースを

再起動する機能が備えられています。

タイムアウト期間は、各リソースの以下のプロパティに格納されています。

 

DeadlockTimeout : IsAlive や LooksAlive など一般的な操作のタイムアウトに利用

PendingTimeout : オンラインやオフライン時の Pending 状態のタイムアウトに利用

 

このタイムアウトによるリソース再起動に伴って、Windows Server 2003 では resrcmon.exe が、

Windows Server 2008, Windows Server 2008 R2 では rhs.exe が再起動し、

Windows Server 2008 の場合には、イベント ログに

Microsoft-Windows-FailoverClustering ID:1230 のエラーが記録されます。

 

Event ID 1230 — Cluster Service Startup

https://technet.microsoft.com/en-us/library/cc773436%28v=ws.10%29.aspx

 

その際、どういった処理で止まっていたのか確認するため、プロセス ダンプから

調査することが有効ですが、Windows Server 2008 にはプロセス ダンプを出力する

機能がありませんでした。

※ Windows Server 2003 と Windows Server 2008 R2 にはプロセス ダンプを出力する機能があります

 

2013 年 1 月に Windows Server 2008 でもデッドロック発生時にプロセス ダンプを

出力する機能が実装された rhs.exe が以下の技術情報で公開されました。

 

Hotfix enables a dump file to be generated when the Rhs.exe process detects a deadlock condition in Windows Server 2008

https://support.microsoft.com/kb/2782761/en-us

 

こちらを適用していただくことで、Windows Server 2008 R2 と同様に

Windows Error Reporting (WER) の機能を利用して以下のパスに

プロセス ダンプが作成されます。

 

 %LOCALAPPDATA%\Microsoft\Windows\WER\ReportQueue

 

もし、Microsoft-Windows-FailoverClustering ID:1230 が記録される問題が

発生しているようであれば、前述の技術情報で公開されているモジュールを

適用していただき、プロセス ダンプを採取することをご検討ください。