Elastic Beanstalkで504返してきたのはELBのタイムアウトの設定が短かったから

December 23, 2015

Drupal を Elastic Beanstalk 環境にインストールしている時に、インストールプロファイルで長めの処理をさせたら時々エラーが出るようになった。

    An AJAX HTTP error occurred. HTTP Result Code: 504 Debugging information follows. Path: http://ebgeminifirst-prod.elasticbeanstalk.com/install.php?profile=gemini_first&locale=en&id=1&op=do StatusText: GATEWAY_TIMEOUT ResponseText:

そんな時は、ELB の設定のConnection Settings: Idle Timeout: 60 secondsを適切な値に変更すれば良い。 Elastic Load Balancing のトラブルシューティング: HTTP エラー - Elastic Load Balancing

HTTP 504: Gateway Timeout 説明: リクエストがアイドルタイムアウト期間内に完了しなかったためロードバランサーが接続を閉じたことを示します。 原因: アプリケーションの応答が、設定されているアイドルタイムアウトよりも長くかかっています。 解決方法: HTTPCodeELB5XX および Latency CloudWatch メトリックスをモニタリングします。これらのメトリックスに増加があった場合は、アイドルタイムアウト期間内に応答しないアプリケーションが原因である可能性があります。タイムアウトしようとしているリクエストの詳細を確認するには、ロードバランサーのアクセスログを有効にし、Elastic Load Balancing によって生成されたログの応答コード 504 を確認します。必要に応じて、バックエンドのキャパシティーを増やしたり、設定されているアイドルタイムアウトを長くしたりして、時間のかかるオペレーション(大容量ファイルのアップロードなど)が完了できるようにします。


Profile picture

Webのフロントエンドからバックエンド、プロトタイピングからプロダクションまで。定額の開発サービスも。詳しくはAboutページで。