web-dev-qa-db-ja.com

特定のリージョンのAWSでの504ゲートウェイタイムアウトエラー

現在の環境:

Node.js APIサーバーは、ロードバランサーとセキュリティグループを備えたEC2インスタンス(Ubuntu20.04)でホストされ、HTTPSとして機能します。フロントエンドはCloudfrontにリンクされたS3にあります。

これら2つのサーバーは、Route 53をDNSプロバイダーとして使用しており、すべて正常に動作しています。

問題:

すべて正常に動作しますが、特定の地域(サウスウィンザーCT、米国)では正常に動作していません。 (インターネットプロバイダーはコックスケーブルです)。 APIリクエストが理由なく504(ゲートウェイタイムアウト)エラーを返すことがよくあります。 UIはうまく機能します。 APIリクエストのみ。しかし、メキシコやロシアなど、さまざまな地域で機能します。

ロードバランサーで多くのことを試しましたが、実際にはロードバランサーログに504エラーはありません。 (私はそれをcloudwatchで確認しました)。これは、リクエストが届かなかったことを意味します。 Route 53のバグでしょうか?構成されているのはCNAMEだけです。そして、なぜこれが特定の地域で起こっているのですか?

どんな経験でも大歓迎です!

3
blackiii

原因1:アプリケーションは、構成された非アクティブタイムアウトよりも応答に時間がかかります。

  • 解決策1:HTTPCode_ELB_5XXおよびレイテンシメトリックを監視します。これらのメトリックが増加した場合は、非アクティブタイムアウト期間内にアプリケーションが応答しなかったことが原因である可能性があります。この制限を超えるリクエストの詳細については、ロードバランサーでアクセスログを有効にし、Elastic Load Balancingによって生成されたログで504応答コードを確認してください。必要に応じて、容量を増やすか、構成されたダウンタイムを増やすことができます。

原因2:登録されたインスタンスがElastic Load Balancingへの接続を閉じています。

  • 解決策2:EC2インスタンスでキープアライブ設定を有効にし、キープアライブタイムアウトがロードバランサーの非アクティブタイムアウト設定よりも長いことを確認します。

メモ:

  • ファイアウォール、セキュリティグループ、オリジンサーバーの構成を確認して、エラーの原因を特定します
  • CloudFrontからHTTP 504エラーを受信して​​いるが、直接Originに接続できる場合は、ディストリビューションのOrigin応答タイムアウトを増やすことを検討してください。 CloudFrontでは、デフォルトで、Origin接続を30秒間開いたままにすることができます。アプリケーションが処理して応答を返すまでに30秒以上必要な場合、CloudFrontはHTTP 504エラーを返します。
1
Carpi Del Piero