デフォルトでは、サーバー障害モニターは検証タイムアウトが 2 回続くと、データベースを再起動します。データベースの負荷が小さい場合、連続 2 回の検証タイムアウトはデータベースの停止を意味するものと解決できます。ただし、負荷が大きいときは、データベースが正常に動作していても、サーバー障害モニターの検証がタイムアウトすることがあります。サーバー障害モニターがデータベースを不必要に再起動しないようにするには、連続検証タイムアウトの最大回数を増やします。
連続検証タイムアウトの最大回数を増やすと、データベースの停止を検出するためにかかる時間が長くなります。
連続検証タイムアウトの最大許容回数を変更するには、2 回目以降の検証タイムアウトごとに、カスタムアクションファイルにエントリを 1 つずつ作成します。
最初の検証タイムアウトについては、対応するエントリを作成する必要はありません。 最初の検証タイムアウトに対してサーバー障害モニターが実行するアクションは、事前に設定されています。
許容される最後の検証タイムアウトについては、キーワードを次のように設定してエントリを作成します。
ERROR_TYPE に TIMEOUT_ERROR を設定します。
ERROR に、連続検証タイムアウトの最大許容回数を設定します。
ACTION に RESTART を設定します。
2 回目以降の検証タイムアウトのそれぞれに、次のようにキーワードを設定してエントリを 1 つずつ作成します。
ERROR_TYPE に TIMEOUT_ERROR を設定します。
ERROR に検証タイムアウトの序数を設定します。たとえば、2 回目の連続検証タイムアウトの場合は、2 を設定します。3 回目の連続検証タイムアウトの場合は、3 を設定します。
ACTION に NONE を設定します。
デバッグしやすくするには、検証タイムアウトの序数を示すメッセージを指定します。
次に、検証タイムアウトの最大連続回数を 5 回に増やすカスタムアクションファイルのエントリの例を示します。
{ ERROR_TYPE=TIMEOUT; ERROR=2; ACTION=NONE; CONNECTION_STATE=*; NEW_STATE=*; MESSAGE="Timeout #2 has occurred."; } { ERROR_TYPE=TIMEOUT; ERROR=3; ACTION=NONE; CONNECTION_STATE=*; NEW_STATE=*; MESSAGE="Timeout #3 has occurred."; } { ERROR_TYPE=TIMEOUT; ERROR=4; ACTION=NONE; CONNECTION_STATE=*; NEW_STATE=*; MESSAGE="Timeout #4 has occurred."; } { ERROR_TYPE=TIMEOUT; ERROR=5; ACTION=RESTART; CONNECTION_STATE=*; NEW_STATE=*; MESSAGE="Timeout #5 has occurred. Restarting."; }
この例は、検証タイムアウトの最大連続回数を 5 回に増やすカスタムアクションファイルのエントリです。これらのエントリで指定される処理は、次のとおりです。
サーバー障害モニターは、連続する検証タイムアウトの 2 回目から 4 回目までを無視します。
5 回目の連続検証タイムアウトに対して、サーバー障害モニターが実行するアクションは再起動です。
このエントリは、タイムアウト発生時のデータベースとサーバー障害モニター間の接続状態に関係なく適用されます。
データベースとサーバー障害モニター間の接続状態は、タイムアウト発生後も維持されます。
2 回目から 4 回目の連続検証タイムアウトについては、発生時に次の形式のメッセージがリソースのログファイルに出力されます。
Timeout #number has occurred. |
5 回目の連続検証タイムアウトが発生すると、次のメッセージがリソースのログファイルに出力されます。
Timeout #5 has occurred. Restarting. |