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()认为它有 64 个核而不是只有 1 个,你最终会产生 129 个工人。 这比容器拥有的资源要多得多,最终导致内存不足崩溃。

最有用的评论

@twosigmajab好主意! 请继续 :)

所有4条评论

你好😄! 感谢您的通知。

Gunicorn 中的默认设置是单个工作人员,即使文档中有一个检测数字的示例。 鉴于这看起来最终可能是一个 Python 错误修复,我不确定我们应该在这里特别做些什么。 不过,在flask-gunicorn 向下游提交它很有意义。

它更多的是应该在 python 中修复的东西,而不是真正的问题。 该文档是在 docker 甚至不存在的时候制作的,但我认为它对于示例仍然有用,因为它非常明确。 然后关闭问题。

在文档中添加 1 条细线来说明(“但如果使用容器,请注意BPO-36054 !”)可以让许多用户在他们仍然使用未修复此问题的 Python 版本之后的几年里头疼不已。 如果您不反对合并它,如果没有人击败我,我将提交 PR。

@twosigmajab好主意! 请继续 :)

此页面是否有帮助?
0 / 5 - 0 等级