当在我的物理机器上运行 Node.js 集群模块时,os.cpus().length
将得到 4
,但是之后将应用程序放入 docker 容器中,然后它返回 2
!
我通常知道这是因为默认情况下 Golang
只会在一个单核上运行,这就是为什么这里的集群模块只能看到一个单 CPU 核(2 个逻辑核)。
如果我希望我的集群模块利用所有物理 CPU 核心,实现该目标的正确方法是什么?
我尝试使用 --cpuset-cpus=0-1
选项,直到现在还没有弄清楚。
我在想,如果我只是创建一个任意数量的worker,那真的可以利用所有的CPU核心吗? os.cpus().length
这里只是用来计算机器有多少个 cpu 核心,我可以通过调用 shell 脚本来解决这个问题。这意味着这个问题可以简单地等同于 Node.js os.cpus()
API is not compatible with docker?是真的吗?
最佳答案
关于在 docker 容器内运行时,Node.js 集群模块无法使用所有 cpu 内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44747596/