Gunicorn: multiprocessing.cpu_count()はコンテナでは危険です

作成日 2019年05月02日  ·  4コメント  ·  ソース: benoitc/gunicorn

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

https://bugs.python.org/issue36054のため、これらのドキュメントの推奨事項は、コンテナ内で実行する場合は危険です。 コンテナに(たとえば)64コアのマシンにシングルコアと512 MBのRAMが割り当てられている場合、 multiprocessing.cpu_count()は、コンテナが1つではなく64コアであると見なし、129人のワーカーを生成することになります。 これは、コンテナがリソースを持っているよりもはるかに多く、メモリ不足のクラッシュを引き起こすことになります。

最も参考になるコメント

@twosigmajab良いアイデア! 先に進んでください :)

全てのコメント4件

こんにちは😄! 通知ありがとうございます。

ドキュメントに番号を検出する例がある場合でも、Gunicornのデフォルトはシングルワーカーです。 これは最終的にPythonのバグ修正になる可能性が高いことを考えると、ここで特に行うべきことがあるかどうかはわかりません。 ただし、flask-gunicornで下流にファイリングすることは非常に理にかなっています。

それはPythonで修正されるべきものであり、実際には問題ではありません。 ドキュメントはdockerが存在していなかったときに作成されましたが、非常に明示的であるため、例としてはまだ役立つと思います。 その後、問題を閉じます。

ドキュメントに1行追加すると(「コンテナを使用する場合はBPO-36054に注意してください!」)、これが修正されていないバージョンのPythonを引き続き使用するため、多くのユーザーの頭痛の種を減らすことができます。 あなたがそれをマージすることに反対しないのであれば、誰も私に勝てないなら、私はPRを提出します。

@twosigmajab良いアイデア! 先に進んでください :)

このページは役に立ちましたか?
0 / 5 - 0 評価