アプリのREST APIは、典型的な自動スケーリング/負荷分散セットアップを使用してAWS EC2インスタンスで実行されるGunicorn(Nginxの背後ではない)によって提供されます。ロードバランサーのアイドルタイムアウトは60秒で、Gunicornのキープアライブタイムアウトは2秒です。504 Gateway Timeout
この構成から散発的な応答が見られました。Amazonのドキュメントによると、これはサーバーのキープアライブタイムアウトがロードバランサーのアイドルタイムアウト設定よりも低いためである可能性があります。
原因2:登録済みインスタンスがElastic Load Balancingへの接続を閉じています。
解決策2:EC2インスタンスでキープアライブ設定を有効にし、キープアライブタイムアウトをロードバランサーのアイドルタイムアウト設定以上に設定します。
Nginxの場合、デフォルトkeepalive_timeout
は75秒で、これはELBのデフォルト設定でうまく機能しているようです。ただし、Gunicornのドキュメントkeepalive
では、1〜5秒の範囲の設定を推奨しています。
Gunicornのキープアライブを75秒に上げるのは理にかなっていますか?それとも、前にリバースプロキシを使用していないのに、5秒未満に保つ理由がありますか?