Windowsのアプリケーションログで TTYCA(または DISKCA )のアプリケーションエラーが発生し、LifeKeeper のプロセスが再起動されるケースが発生する場合があります。
17:19:56 TTYCA.exe のアプリケーションエラー
17:19:56 *ERROR* (No. 19166) lkinit: Unable to terminate process
[C:\LK/bin/LCM.EXE] 17:19:57 *INFO* (No. 969) LifeKeeper LCD daemon is now available
17:20:27 *INFO* (No. 959) LifeKeeper: communication to HOST1 by TCPIP:1500 RESTORED
17:20:27 *INFO* (No. 959) LifeKeeper: communication to HOST1 by TCPIP:1510 RESTORED
この現象が発生する要因は、何らかのガベージ情報がディスクやシリアルポートのパイプコネクションに混入し、相手ノードにて正しく解釈されなかったため、本現象が発生したと考えられます。
ディスクやシリアルポート(TTY)を利用したコミュニケーションパスを使用している場合は、ガベージの混入によるアプリケーションエラーは発生しないことを確認しています。(「ガベージ情報」とはメモリ内に残存しているゴミ情報)
ディスクやシリアルポート(TTY)を利用したコミュニケーションパスを使用していない場合は、以下を参考に DISKCA.exe と TTYCA.exe を起動を抑制する対処を実施してメッセージが出力されなくなることをご確認ください。
◆対処
以下の手順を全サーバに実行してください。
1.C:\LK\Etc\lkinit.config ファイルを変更します。
このファイルは LifeKeeper サービスの起動ともに自動起動されるプロセスを定義するファイルです。このファイルから TTYCA.exe と DISKCA.exe の行を削除します。(# のコメントアウトでも可)
*) 元のファイルはリネームして残しておいて下さい。
<オリジナル>
C:\LK/bin/LCM.EXE 1 X X X X X X
C:\LK/bin/SOCKCA.EXE|-t 1 X X X X X X
C:\LK/bin/TTYCA.EXE|-t 1 X X X X X X
C:\LK/bin/DISKCA.EXE|-t 1 X X X X X X
C:\LK/bin/LCMLCDINT.EXE 1 X X X X X X
C:\LK/bin/LCD.EXE 1 X X X X X X
C:\LK/bin/LKCMServer.EXE|LKCMMessage 1 X X X X X X
<変更後>
C:\LK/bin/LCM.EXE 1 X X X X X X
C:\LK/bin/SOCKCA.EXE|-t 1 X X X X X X
C:\LK/bin/LCMLCDINT.EXE 1 X X X X X X
C:\LK/bin/LCD.EXE 1 X X X X X X
C:\LK/bin/LKCMServer.EXE|LKCMMessage 1 X X X X X X
2.コマンドプロンプトより LifeKeeper を停止します。
C:\LK\Bin\lkstop.exe -f
3.LifeKeeper GUI は全て終了してください。
LifeKeeper GUI が起動されていると LifeKeeper のサービスを起動するときにエラーとなり LifeKeeper が起動しません。
4.コマンドプロンプトより LifeKeeper を起動します。
C:\LK\Bin\lkstart.exe
5.他のクラスタノードも1〜3の手順を実施します。
6.実施後、タスクマネージャーなどで TTYCA.exe と DISKCA.exe が起動していなければ完了です。
SOCKCA.EXE などの別のプロセスでアプリケーションエラーが生じた場合
TTYCA.EXE(またはDISKCA.EXE)の問題との関連性は不明ではございますが、SOCKCA.EXE などの別のプロセスでアプリケーションエラーが生じることがございます。
プロセス自体は自動で再起動いたしますが、監視動作のタイミングによりリソース異常を検出する可能性があり、注意が必要です。アプリケーションエラーが発生する要因は特定されておらず、発生要因について調査を行うためには OS の完全メモリダンプの取得が必要となります。
発生頻度が高いお客様は以下をご参考に完全メモリダンプの取得をご検討ください。
手順はマイクロソフト社様の情報を元にしておりますため手順に対してのご質問はマイクロソフト社様にご確認ください。
Collecting User-Mode Dumps
https://docs.microsoft.com/en-us/windows/win32/wer/collecting-user-mode-dumps
完全なメモリダンプの出力設定
■レジストリエディタを開きます
次の手順に従って、レジストリエディタを開きます。
1. Windows + R キーを押して、「ファイル名を指定して実行」コマンドボックスを開きます。
2. ファイル名を指定して実行ウィンドウに regedit と入力します。
3. ユーザー制御ウィンドウポップアップボックスが表示されましたら 「はい」で進めます。
■Windows Error Reporting キーのバックアップを作成します
レジストリエディターで変更を行う前に、編集するレジストリキーのバックアップを作成することを推奨します。
以下にバックアップの作成手順を示します。
1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ に移動します。
2. Windows Error Reporting キーを右クリックします。
3. 「エクスポート」を選択して、デスクトップに.reg ファイルを保存します。
■LocalDumps キーを作成します
1.レジストリエディタで以下のキーに移動します。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting
2.Windows Error Reporting キーを選択し、LocalDumps という名前の新しいキーを作成します(存在しない場合)。
1) Windows Error Reporting を右クリックします。
2) 「新規」を選択してから、「キー」を選択します。
3) キーに LocalDumps と名前を付けます。
■LocalDumps キーのレジストリ値を作成します
LocalDump キーを選択して、以下の 3 つのレジストリ値を作成します。
・DumpFolder (ダンプ ファイルを格納するパス)
右側の空白部分を右クリックして、「新規」 → 「展開可能な文字列値」を選択します。
DumpFolder という名前を付けます。
これをダブルクリックして、「値のデータ」フィールドに %LOCALAPPDATA%\CrashDumps を入力します。
・DumpCount(フォルダー内のダンプ ファイルの最大数)
右側の空白部分を右クリックして、「新規」→「DWORD (32 ビット) 値」を選択します。
DumpCount という名前を付けます。
これをダブルクリックして、「値のデータ」フィールドに 10 を入力します。
・DumpType(ダンプの種類)
右側の空白部分を右クリックして、「新規」→「DWORD (32 ビット) 値」を選択します。
DumpType という名前を付けます。
これをダブルクリックして、「値のデータ」フィールドに 2 を入力します。
レジストリの設定を行った後に、アプリケーションエラーが生じますとダンプファイルが出力されます。
[改訂履歴]
2022/05/20 SOCKCA.EXE についてと完全メモリダンプについて追記。