Amazon OpenSearch Service での HTTP 504 ゲートウェイのタイムアウトエラーを防ぐにはどうすればよいですか?

最終更新日: 2021 年 7 月 30 日

Amazon OpenSearch Service (Amazon Elasticsearch Service の後継サービス) で 504 ゲートウェイタイムアウトエラーを解決しようとしています。これを行うにはどうすればよいですか?

簡単な説明

ロードバランサーは、各 OpenSearch Service ドメインの前に配置されます。ロードバランサーは、受信トラフィックをデータノードに分散します。OpenSearch Service リクエストが完了せず、アイドルタイムアウト期間内に確認が返された場合、ロードバランサーは TCP 接続を閉じます。その結果、HTTP 504 ゲートウェイタイムアウトエラーが発生します。HTTP 504 ゲートウェイのタイムアウトエラーは、必ずしもクラスターの問題を示しているわけではありません。アイドルタイムアウト時間内にリクエストを完了できなかったことを意味するだけです。

通常、ゲートウェイのタイムアウトエラーが発生するのは、同時に送信したリクエストが多すぎるか、複雑なリクエストを送信した場合です。どちらの場合も、結果は同じで、OpenSearch Service はアイドルタイムアウト期間内にリクエストを完了できません。

解決方法

HTTP 504 ゲートウェイのタイムアウトエラーを解決するには、次の 1 つまたは複数の方法を使用します。

  • OpenSearch Service インデックスのスローログを有効にしてから、ログ記録のしきい値を指定します。スローログは、特定のクエリの完了に時間がかかるかどうかを判断するのに役立ちます。その場合は、クエリを調整して、504 エラーを解決します。詳細については、Viewing Amazon OpenSearch Service slow logs を参照してください。
  • OpenSearch Service がリクエストのためにクエリする必要があるデータの量を減らします。これにより、リクエストが完了するまでの時間が短縮されます。
  • より大きなインスタンスタイプに切り替える。詳細については、インスタンスタイプとテストの選択を参照してください。
  • エクスポネンシャルバックオフを設定し、アプリケーションのメカニズムを再試行して、タイムアウトしたリクエストが再送信されるようにします。
  • 個別のリクエストの代わりに一括リクエストを使用します。これにより、クラスターのリクエストごとのオーバーヘッドが減ります。