码头工人群或牧场牛中的芹菜工人

Posted

技术标签:

【中文标题】码头工人群或牧场牛中的芹菜工人【英文标题】:Celery workers in a docker swarm or rancher cattle 【发布时间】:2017-07-29 19:33:31 【问题描述】:

我有一个设计问题。我在几个主机上使用 dockerized celery workers。我在每台主机上只有一个 celery 容器实例,但使用 celery 的默认工作人员设置,默认为该主机上的内核数。我没有为 docker 容器设置任何限制。我使用 rancher 部署到使用牛环境的主机,但我想我的问题同样适用于任何 docker 集群,如 swarm。我没有通过使用多个容器来使用扩展功能,因为 celery 的工作方式——一个容器已经能够通过拥有多个工作人员来利用核心。问题是:在主机上拥有更多 1 个工作容器对我有什么好处?如果是这样,我是否需要将每个 celery worker 限制为每个容器中的一个,并让集群扩展多个容器?我能想象的唯一好处是从高可用性的角度来看,如果芹菜工人在主机上死了,那么它就消失了,但是如果我有更多的容器,其他人可以接管工作,但我认为芹菜可以通过重生来做同样的事情工人也是。我错过了什么吗?

【问题讨论】:

【参考方案1】:

确定的唯一方法是根据您的特定工作负载对其进行基准测试,但您的直觉通常是正确的。如果应用程序能够始终如一地使用所有内核,那么运行更多内核通常会使事情变得稍微慢一些,因为上下文切换。诸如仍然可用之类的附带好处我希望许多工人都失败了,这对您来说可能值得,也可能不值得。

【讨论】:

感谢您确认我的想法。我会听取您的建议和基准。

以上是关于码头工人群或牧场牛中的芹菜工人的主要内容,如果未能解决你的问题,请参考以下文章

牧场主网络码头工人撰写

如何优雅地重启芹菜工人?

芹菜工人在 aws 弹性豆茎中失败 [退出:芹菜工人(退出状态 1;未预期)]

芹菜。运行单个芹菜节拍 + 多个芹菜工人规模

Akka遥控器在码头工人容器中

从芹菜任务中获取芹菜工人的名字?