DAX クライアントで「利用可能なエンドポイントがありません」というエラーをトラブルシューティングするにはどうすればよいですか?

所要時間1分
0

Amazon DynamoDB Accelerator (DAX) で「利用可能なエンドポイントがありません」というエラーが発生しました。

簡単な説明

「利用可能なエンドポイントがありません」というエラーは、クライアントが DAX クラスターのノードに対してネットワークルートを持っていない場合に発生します。このエラーは、クラスターが停止しているか、CPU 使用率が高い場合にも発生する可能性があります。

以下は、このエラーが発生する可能性のあるいくつかの例です。

  • DAX ノードへのヘルスチェックの失敗: ノードからの高い CPU 負荷のため、クライアントはクラスターノードのヘルスチェックを実行できません。
  • 各ノードへの連続した I/O 例外の複数: DAX クライアントは、I/O 例外の数を数えてサーバーノードが停止しているかどうかを判断します。クライアントは設定エンドポイントからサーバーノードのリストを取得します。サーバーノードから 5 回以上のエラーを受け取ると、クライアントはそのノードをアクティブなサーバーノードのリストから削除します。この方法ですべてのサーバーノードが削除されると、クライアントは空のアクティブノードリストになります。これに対して、クライアントは「利用可能なエンドポイントがありません」というエラーを表示します。

解決方法

以下のトラブルシューティング手順を使用してエラーを解決します。

  • DAX クライアントには、アクティブなサーバーノードのリストを更新するスレッドがあります。[更新オプション] を使用して、リスト内のアクティブノードを復元します。
  • クライアントのトラフィックパターンに基づいて、RequestTimeout を増やします。詳細については、「レイテンシーを考慮したAmazon DynamoDB アプリケーションのための AWS Java SDK HTTPリ クエスト設定のチューニング」を参照してください。
  • ヘルスチェック間隔を増やします。デフォルトでは、health-check-interval は 5 秒です。
    **注:**この間隔を増やすと、socket-timeout-exception によりエンドポイントがクライアント側のエンドポイントセットから削除された場合にのみ、エンドポイントが再追加されます。
  • このエラーの再発を減らすためには、より大きなインスタンスタイプにスケーリングアップします。または、クラスターにノードを追加してスケールアウトします。
  • このエラーは、単一ノードクラスターではより頻繁に発生する可能性があります。クラスターが単一のノードしか持っていない場合は、クラスターをスケールアウトしてください。各ノードを異なるアベイラビリティーゾーンに配置します。

関連情報

ClientConfig (DAX)

AWS公式
AWS公式更新しました 1年前