※ 本記事は弊社の Technet から移行した記事です。
いつも弊社製品をご利用いただきまして誠にありがとうございます。日本マイクロソフトの Windows サポートチームです。
本日は、クラスター環境で発生するイベント ID 1230 (ソース:Microsoft-Windows-FailoverClustering) についてご紹介します。
- イベント ID 1230
クラスターではリソースに対する操作 (正常性チェック LooksAlive, IsAlive など) で応答が無い場合に、リソースの応答を待ち続けることでクラスターの動作が停止することを防ぐためにタイムアウト値 DeadlockTimeout が設けられています。
リソースの操作が DeadlockTimeout 値を超えて完了しないとタイムアウトが発生しイベント ID 1230 が記録されます。
- 調査方法について
イベント ID 1230 が記録された時のクラスター ログからは何の操作でタイムアウトが発生したかを確認することができますが、リソースの操作が停止しタイムアウトした原因はイベント ログやクラスター ログなどから調査することが困難となります。
ERR [RHS] RhsCall::DeadlockMonitor: Call LOOKSALIVE timed out for resource 'Disk01'.
例えば、上記のようにクラスター ログからはディスク リソース ‘Disk01’ に対する LooksAlive がタイムアウトしたことが分かりますが、LooksAlive の処理がタイムアウトした原因については判断することができず、別途調査が必要となります。
一般的にディスク リソースの操作でタイムアウトが発生する原因としては、ウィルス対策ソフトなどのフィルター ドライバーによりディスクへの I/O が阻害される問題や、ストレージ側の高負荷により応答を返せないような問題などが多く報告されています。
この場合、ウィルス対策ソフトを停止し事象の切り分けを行うことやストレージ側での事象発生時の負荷状況などを確認していただく必要がありますが、OS の観点からは事象発生時にメモリダンプを採取いただくことで、タイムアウト発生時のメモリ情報からリソースへの操作が何の処理で待たされていたのか調査を進めることが可能です。
※ タイムアウトの一例としてディスク リソースを上げていますが、メモリダンプの調査はリソースの種類に依存せず有効です。
以下、イベント ID 1230 が記録された時に自動でメモリダンプ採取を行う方法を紹介します。
運用中の環境などでイベント ID 1230 が記録され再現性がある場合には、原因調査のためには下記設定を行い事象再現時のメモリダンプを採取して弊社サポートまでお問い合わせいただくことをご検討ください。
- イベント ID 1230 記録時に自動でメモリダンプを採取する方法
メモリダンプの設定については、下記ブログをご参考ください。
※ メモリダンプの種類は完全メモリダンプを採取いただくことを推奨いたしますが、完全メモリダンプへの設定変更が難しい場合には、まずはカーネル メモリダンプの採取をお願いします。
- メモリダンプ自動採取設定 < Windows Server 2012 以降 >
Windows Server 2012 以降では、クラスター リソースの DeadlockTimeout が検知されると自動でメモリダンプを出力させるレジストリ設定が備わっています。
そのため以下のレジストリを設定し、イベント ID 1230 が記録された際のメモリダンプを採取します。
レジストリの設定はクラスターを組む全ノードで行い、変更後には再起動が必要です。
タイムアウト発生時に STOP エラーを発生させる設定
※ 事前にメモリダンプの設定を確認します。
- 管理者権限のコマンド プロンプトを起動し regedit と入力し、[OK] を選択します。
- レジストリ エディタが起動しますので、次のレジストリ キーを見つけて選択します。
- <対象キー: Windows Server 2012>
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Failover Clusters\
Windows Server 2012 では下記 a) ~ d) を行い手順 3. に進みます。
a) 対象キーを [右クリック] -> [アクセス許可] -> [詳細設定] を選択します。
b) ダイアログ上部に記載されている [所有者] 欄の [変更] を選択します。
c) 変更を行うユーザーまたはグループを指定します。
d) 変更を行うユーザーまたはグループのフルコントロール権限を追加します。
- <対象キー: Windows Server 2012 R2 / Windows Server 2016 / Windows Server 2019 / Windows Server 2022>
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClusSvc\Parameters\
- [編集] メニューの [新規] をポイントし、[DWORD 値] をクリックします。
- DebugBreakOnDeadlock と入力し、Enter キーを押します。
- [編集] メニューの [修正] をクリックします。
- [値のデータ] に [3] を入力して [OK] を選択します。
現象発生後、ダンプファイルが作成されますので、生成された Memory.dmp ファイルをご提供ください。
手順は以上となります。