28

我将 Django 与 Celery 3.0.17 一起使用,现在试图弄清楚默认运行了多少 celery 工人。

这个链接我了解到(没有修改这个配置)工作人员的数量当前必须等于 CPU 核心的数量。这就是为什么我需要前者。我无法通过谷歌搜索或搜索Heroku 的开发中心找到官方答案。我认为它是 4 个核心,因为我看到 4 个并发连接到我的 AMQP 服务器,但我想确认一下。

4

3 回答 3

38

CPU 数量未公布,可能会发生变化,但您可以在运行时通过运行grep -c processor /proc/cpuinfo.

于 2013-06-12T07:01:04.157 回答
14

根据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
于 2015-10-06T20:51:00.243 回答
4

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,但最好假设一次只能执行一个进程。

于 2020-11-17T17:01:13.510 回答