【问题标题】:Node.js cluster module cannot use all the cpu cores when running inside docker container在 docker 容器内运行时,Node.js 集群模块无法使用所有 cpu 内核
【发布时间】:2017-06-25 15:00:03
【问题描述】:

在我的物理机上运行 Node.js 集群模块时,os.cpus().length 会得到 4,但是在将应用程序放入 docker 容器后它会返回 2

我通常知道这是因为默认情况下Golang 只会在一个内核上运行,这就是为什么这里的集群模块只能看到一个 CPU 内核(2 个逻辑内核)。

如果我希望我的集群模块利用所有物理 CPU 内核,实现此目的的正确方法是什么?

我尝试使用--cpuset-cpus=0-1 选项,直到现在还没有弄清楚。

我在想,如果我只是创建 任意 数量的工人,那真的可以利用所有 CPU 内核吗?这里的os.cpus().length 只是用来计算机器有多少个cpu 内核,我可以通过调用shell 脚本来解决这个问题。这意味着这个问题可以简单地等同于 Node.js os.cpus() API 与 docker 不兼容?这是真的吗?

【问题讨论】:

  • 您使用的是 Windows 还是 Mac?
  • @Robert Mac,这有什么关系?
  • Mac 上的 Docker 正在 Linux 虚拟机上运行。点击任务栏中的鲸鱼,配置分配的cpu核心数。
  • @Robert,哦,是的,经过验证,是的,是的,比你好多了。
  • @Inshi 不客气

标签: node.js docker


【解决方案1】:

您的 docker 机器使用默认的 2 核。在 Mac 上,您可以提前更改金额。

【讨论】:

    猜你喜欢
    • 2017-11-22
    • 2020-01-07
    • 1970-01-01
    • 2015-04-17
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    相关资源
    最近更新 更多