API REST aplikasi kami dilayani oleh Gunicorn ( tidak di belakang Nginx) yang berjalan pada AWS EC2 dengan pengaturan penskalaan otomatis / penimbangan beban. Batas waktu siaga penyeimbang muatan adalah 60 detik, dan batas waktu tetap-hidup Gunicorn adalah 2 detik. Kami telah melihat 504 Gateway Timeout
respons sporadis dari konfigurasi ini. Menurut Amazon docs , ini mungkin karena batas waktu server tetap hidup lebih rendah daripada pengaturan batas waktu idle load balancer:
Penyebab 2: Mesin virtual terdaftar yang menutup koneksi ke Penyetelan Beban Elastis.
Solusi 2: Aktifkan pengaturan keep-hidup pada instance EC2 Anda dan atur batas waktu keep-hidup menjadi lebih besar atau sama dengan pengaturan waktu tunggu idle load balancer Anda.
Dengan Nginx, standarnya keepalive_timeout
adalah 75 detik, yang tampaknya berfungsi baik dengan pengaturan default ELB. Namun, dokumen Gunicorn merekomendasikan keepalive
pengaturan dalam kisaran 1-5 detik.
Apakah masuk akal untuk meningkatkan keepalive Gunicorn menjadi 75 detik, atau adakah alasan yang baik untuk menyimpannya di bawah 5 detik meskipun kita tidak menggunakan proxy terbalik di depannya?
sumber