Gunicorn: multiprocessing.cpu_count() berbahaya dalam wadah

Dibuat pada 2 Mei 2019  ·  4Komentar  ·  Sumber: benoitc/gunicorn

https://github.com/benoitc/gunicorn/blob/bd833e0009b8b07d13117f71534eb28e8dc24c5d/docs/source/configure.rst#L67

Karena https://bugs.python.org/issue36054 , rekomendasi dalam dokumen ini berbahaya saat dijalankan di dalam wadah. Jika wadah Anda telah dialokasikan (misalnya) satu inti dan 512 MB RAM pada mesin dengan 64 inti, multiprocessing.cpu_count() berpikir ia memiliki 64 inti, bukan hanya 1, dan Anda akhirnya menghasilkan 129 pekerja. Ini jauh lebih banyak daripada wadah yang memiliki sumber daya, dan akhirnya menyebabkan kehabisan memori.

Komentar yang paling membantu

@twosigmajab ide bagus! Tolong pergilah :)

Semua 4 komentar

Halo ! Terima kasih atas pemberitahuannya.

Default di Gunicorn adalah pekerja tunggal, bahkan jika dokumentasi memiliki contoh untuk mendeteksi nomor tersebut. Mengingat bahwa ini tampaknya akan menjadi perbaikan bug Python pada akhirnya, saya tidak yakin ada yang harus kita lakukan secara khusus di sini. Namun, mengajukannya ke hilir di flask-gunicorn sangat masuk akal.

itu lebih sesuatu yang harus diperbaiki dengan python tidak benar-benar menjadi masalah di sana. Dokumentasi telah dibuat pada saat buruh pelabuhan bahkan belum ada tetapi saya pikir itu masih berguna untuk contoh karena sangat eksplisit. Menutup masalah kemudian.

Menambahkan 1 baris kecil ke dokumen untuk mengatakan ("tetapi waspadalah terhadap BPO-36054 jika menggunakan wadah!") dapat menghemat banyak pengguna sakit kepala selama ~ tahun mereka masih akan menggunakan versi Python yang tidak diperbaiki. Jika Anda tidak menentang penggabungan itu, saya akan mengajukan PR jika tidak ada yang mengalahkan saya.

@twosigmajab ide bagus! Tolong pergilah :)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat