Pengaturan Keepalive untuk Gunicorn di belakang ELB tanpa Nginx

15

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 Timeoutrespons 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_timeoutadalah 75 detik, yang tampaknya berfungsi baik dengan pengaturan default ELB. Namun, dokumen Gunicorn merekomendasikan keepalivepengaturan 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?

handsofaten
sumber

Jawaban:

16

Anda hampir pasti ingin menaikkan timer keepalive sesuai rekomendasi ELB, karena ELB menggunakan kembali koneksi. Itu akan menahan mereka sampai batas waktu habis dan jika permintaan lain tiba di ELB, ia akan sering menggunakan salah satu koneksi yang sudah terbuka untuk mengirimkannya kepada Anda.

504 Gateway Timeout adalah kesalahan aneh untuk kondisi ini tetapi tampaknya itulah yang ELB kembali ketika penggunaan kembali koneksi bertepatan dengan penutupan prematur back-end.

Rekomendasi 5 detik mungkin masuk akal jika browser berkomunikasi dengan back-end secara langsung, tetapi itu tidak terjadi dengan ELB, yang dengan sendirinya merupakan proxy-mundur yang tepat ketika berjalan dalam mode HTTP.

Michael - sqlbot
sumber
Terima kasih, ini yang saya duga. Saya akan mencoba perubahan ini minggu ini dan menandai jawaban Anda benar jika semuanya berjalan lancar :)
handsofaten
Kami menggabungkan perubahan sekitar seminggu yang lalu dan 504 menjadi kurang umum (beberapa kali seminggu, bukan beberapa ratus kali seminggu).
Handsofaten