24.2.11.2. 障害検出での不明なハートビートの原因
ハートビートの確認が一定時間 (T
) 受信されないと、障害検出 (FD) によってクラスターメンバーが原因として疑われることがあります。T は timeout
および max_tries
によって定義されます。
たとえば、ノード A、B、C、および D のクラスターがあり、A が B、B が C、C が D、D が A を ping する場合、以下のいずれかの理由で C が疑われます。
-
B または C が CPU の使用率が 100% の状態で
T
秒よりも長く稼働している場合。この場合、 C がハートビート確認を B に送信しても CPU の使用率が 100% であるため B が確認を処理できないことがあります。 - B または C がガベッジコレクションを実行している場合、上記と同じ結果になります。
- 上記 2 件の組み合わせ。
- ネットワークによるパケットの損失が発生する場合。通常、ネットワークに大量のトラフィックがあり、スイッチがパケットを破棄すると発生します (通常は最初にブロードキャスト、次に IP マルチキャスト、そして最後に TCP パケットが破棄されます)。
-
B または C がコールバックを処理する場合。C が処理に
T
+ 1 秒かかるリモートメソッド呼び出しをチャネル上で受信した場合、C はハートビートを含む他のメッセージを処理できません。そのため、B はハートビート確認を受信せず、C が疑われます。