Saya telah menggunakan nginx dan gunicorn untuk meng-host situs web saya di dua server,
Kedua server memiliki versi paket yang sama dan situs web berhasil dihosting,
Tetapi di salah satu server saya, gunicorn selalu mendapat batas waktu dan saya mendapatkan kesalahan
[CRITICAL]Worker Timeout
Booting worker with pid
Worker cannot boot with pid
Dan setelah ini saya mendapatkan 502 kesalahan Badgateway di halaman web. Saya harus memulai kembali proses gunicorn untuk membuka situs web.
Berikut ini adalah log kesalahan:
2014-02-16 14:29:53 [1267] [CRITICAL] WORKER TIMEOUT (pid:4994)
2014-02-16 14:29:53 [1267] [CRITICAL] WORKER TIMEOUT (pid:4994)
2014-02-16 14:29:53 [22140] [INFO] Booting worker with pid: 22140
Dan saya mendapatkan kesalahan berkelanjutan seperti ini,
2014-02-16 14:29:53 [22140] [DEBUG] Ignoring EPIPE
Ignoring EPIPE
2014-02-16 14:29:53 [22140] [DEBUG] Ignoring EPIPE
Ignoring EPIPE
2014-02-16 14:29:57 [22140] [DEBUG] Ignoring EPIPE
Ignoring EPIPE
Dan pekerja mulai lagi,
2014-02-16 14:32:44 [1267] [CRITICAL] WORKER TIMEOUT (pid:4993)
2014-02-16 14:32:44 [1267] [CRITICAL] WORKER TIMEOUT (pid:4993)
2014-02-16 14:32:44 [22276] [INFO] Booting worker with pid: 22276
Sekali lagi Mengabaikan kesalahan EPIPE dan ini berlanjut sampai saya me-restart gunicorn. Dan ketika saya mendapatkan kesalahan ini saya mendapatkan 504 gateway error dari nginx
strace -p <PID> -e trace=network -t
Jawaban:
Untuk memperbaiki ini, tambahkan batas waktu bendera di Nginx,
Dalam peningkatan Nginx
proxy_connect_timeout
danproxy_read_timeout
, Anda dapat menambahkan berikut ini di file nginx.conf di bawahhttp
arahan. Mereka default ke 60-an.proxy_connect_timeout 300s;
proxy_read_timeout 300s;
Mulai ulang server Nginx. Lihat dokumen nginx tentang batas waktu .
Jika perbaikan di atas tidak berhasil, maka tambah bendera batas waktu Gunicorn dalam konfigurasi Gunicorn, batas waktu Gunicorn default adalah 30 detik.
--waktu habis 90
Dokumentasi Gunicorn tentang batas waktu
-t INT, --timeout INT 30 Pekerja yang diam lebih dari beberapa detik ini terbunuh dan dimulai kembali.
Secara umum diatur ke tiga puluh detik. Hanya atur ini secara nyata lebih tinggi jika Anda yakin akan dampaknya bagi pekerja sinkronisasi. Untuk pekerja yang tidak sinkron itu hanya berarti bahwa proses pekerja masih berkomunikasi dan tidak terikat dengan lamanya waktu yang diperlukan untuk menangani satu permintaan.
Gunicorn Documents pada Timeout Pekerja
Semoga ini bisa menyelesaikannya.
sumber