Gunicorn: Pertanyaan: Apa yang terjadi jika semua pekerja sibuk dan permintaan masuk?

Dibuat pada 28 Jan 2019  ·  3Komentar  ·  Sumber: benoitc/gunicorn

Saya curiga:

  • permintaan diblokir sampai pekerja bebas, atau
  • permintaan gagal (mis: dengan respons batas waktu HTTP 504 Gateway langsung, atau koneksi ditutup yang dilaporkan sebagai batas waktu HTTP 504 Gateway oleh proxy upstream seperti Nginx)

(Saya mencoba memposting pertanyaan ini ke milis Gunicorn, tetapi saya tidak dapat menemukan instruksi yang jelas tentang bagaimana melakukannya secara langsung. Jadi semoga membuat masalah Github adalah rute yang benar.)

Question Discussion

Semua 3 komentar

Ini adalah tempat yang bagus untuk itu :) Anda dapat menemukan beberapa informasi di sana: http://docs.gunicorn.org/en/stable/design.html

bagaimanapun itu akan tergantung. Dengan Gunicorn di belakang NGINX, bahkan pekerja sinkronisasi dapat menerima banyak koneksi. Ini akan menangani permintaan N secara bersamaan (di mana N adalah jumlah pekerja) sementara Anda dapat memiliki banyak menunggu di buffer nginx. Saya kebanyakan kasus ini cukup untuk menjalankan situs web yang sangat besar dengan lebih dari 10K koneksi simultan.

Untuk penggunaan lain, Anda memiliki pekerja async. Sementara NGINX atau proxy apa pun yang dapat menyangga koneksi akan terus membantu pekerja ini akan memungkinkan Gunicorn untuk menangani lebih banyak koneksi bersamaan atau membuat beberapa koneksi tetap terbuka untuk waktu yang lama.

Semoga saya menjawab pertanyaan Anda.

Untuk menjawab tentang Gunicorn saja:

Pengaturan backlog menentukan seberapa dalam backlog mendengarkan OS. Jika backlog penuh, permintaan akan ditolak oleh OS dan gateway akan mengalami kegagalan koneksi upstream. Jika backlog tidak penuh, koneksi akan dibuka oleh OS, tetapi tidak akan ditangani oleh Gunicorn hingga pekerja Gunicorn siap menerima permintaan tersebut. Gateway dapat mengembalikan batas waktu upstream jika Gunicorn tidak menangani permintaan dengan cepat.

Jika Anda menemukan bahwa Anda memiliki banyak batas waktu upstream dan Anda menjalankan proxy terbalik di depan Gunicorn, Anda mungkin ingin menurunkan backlog sehingga proxy Anda dapat gagal lebih efisien.

Terima kasih. Jawaban ini membantu.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat