【发布时间】: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 不客气