我将 Django 与 Celery 3.0.17 一起使用,现在试图弄清楚默认运行了多少 celery 工人。
从这个链接我了解到(没有修改这个配置)工作人员的数量当前必须等于 CPU 核心的数量。这就是为什么我需要前者。我无法通过谷歌搜索或搜索Heroku 的开发中心找到官方答案。我认为它是 4 个核心,因为我看到 4 个并发连接到我的 AMQP 服务器,但我想确认一下。
CPU 数量未公布,可能会发生变化,但您可以在运行时通过运行grep -c processor /proc/cpuinfo
.
根据https://blog.heroku.com/archives/2014/2/3/heroku-xl
| | 1X Dyno | Performance Dyno | |-------|--------------|-------------------| | RAM | 512 MB | 6 GB | | | 1x - 4x | 40x (8 CPU cores) | | Price | $0.05 / hour | $0.80 / hour |
2X dynos 也有 4 个核心:
$ heroku run --size=2X grep -c processor /proc/cpuinfo --app app-name
Running grep -c processor /proc/cpuinfo on app-name... up, run.3685
4
但是 PX 测功机有 8 个核心:
$ heroku run --size=PX grep -c processor /proc/cpuinfo --app app-name
Running grep -c processor /proc/cpuinfo on app-name... up, run.4731
8
heroku puma 文档建议您可以通过在测功机上运行来发现这一点nproc
:
因此,例如,要查看 performance-m 上有多少,运行:
$ heroku run bash --size=performance-l
$ nproc
8
但然后除以 2,因为:
nproc 返回的值除了物理内核之外还包括“超线程”,这两者的组合称为 vCPU 计数。Heroku 上使用的所有物理内核都有一个超线程,因此要获得物理内核的“真实”数量除以 2。
这意味着performance-l
有 4 个 CPU。
当我在 上执行相同操作时performance-m
,我得到 2,这意味着实际上只有 1 个 CPU。
Standard-1x 和 Standard-2x 都nproc
告诉我“8”,意思是 4 个 CPU,但是 heroku puma 文档警告说这些 CPU 是与其他用户共享的,因为标准 dyno 是多租户的。
来自 free、hobby、standard-1x 和 standard-2x dynos 的 nproc 的值是正确的,但是这些内核在容器中运行的多个应用程序之间共享。虽然这些 dyno 的 nproc 都将返回 8,但最好假设一次只能执行一个进程。