1

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

4

1 回答 1

0

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

于 2017-03-09T03:41:37.860 回答