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

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

説明: リクエストがアイドルタイムアウト期間内に完了しなかったためロードバランサーが接続を閉じたことを示します。

原因: アプリケーションの応答が、設定されているアイドルタイムアウトよりも長くかかっています。

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

Comments