同一台服务器上有多少个 celery 和 gunicorn 工作者?

同一台服务器上有多少个 celery 和 gunicorn 工作者?

我有一台服务器运行由 gunicorn 和 Celery 任务队列提供的 Django 应用程序。

古尼康文档建议(2 x $num_cores) + 1 作为默认工人数量。

Celery 文档显示 Celery 工作者的数量默认为 1 x $num_cores。

两者都建议通过实验来找到合适的数字。

我的问题是,在同一台机器上运行 Gunicorn 和 Celery 的经验法则是什么?在一台八核机器上,我应该从 17 个 Gunicorn 和 8 个 Celery 工作程序开始吗?或者从 9 个 Gunicorn 和 4 个 Celery 工作程序开始是否更合理?

该系统受 CPU 限制,希望这能有所帮助。

答案1

任何类型的性能调优通常都是说说而已,而不是硬性规定。我最近不得不对我的 Django 应用程序做一些类似的事情,但有人决定滥用它。当您在同一台机器上运行 Gunicorn 和 Celery 时,理想情况下,您应该从更平衡的方法开始,而不是最大限度地利用 Gunicorn 工作者。这是我的方法:

  • Gunicorn 工人:

    • 从数量稍少的 Gunicorn 工作者开始,使用以下公式:2 * $num_cores + 1
    • 对于 8 核机器,你可以从 8-12 个 Gunicorn worker 开始
    • 这样做的原因是,您要确保 Celery 工作者仍留有一些 CPU 资源,因为 Celery 任务可能占用大量 CPU 资源。
  • 芹菜工人:

    • 您可以使用“推荐”数量的 Celery 工作者
    • 它可以定义为 1 * $num_cores
    • 例如,对于 8 核机器,您可以从 8 个 Celery 工作器开始。

因此,在 8 核机器上,良好的起始设置可能如下所示:

  • Gunicorn:8-12 个工人
  • 芹菜:8名工人

目标是不要让 Gunicorn 工作者不堪重负,至少要为 Celery 工作者留下 CPU 资源。

相关内容