Nodejs 工作线程 - 我应该在池中生成多少个工作线程?

问题描述

我想使用 Nodejs Worker threads 来处理 cpu 密集型任务。我将为此创建一个可用的工作人员池。

我的问题是:我应该在池中生成多少工人?

假设我有 4 个内核、8 个线程的 cpu - 我应该最多生成 3 或 7 个工人(基于内核或线程)吗?我假设我必须为主进程保留 1 个核心/线程。

解决方法

我对 workerpool 进行了一些测试。基于这些,我的结论是工作池最多只包含 n - 1 个工作人员,n 是 CPU 拥有的线程数。

例如,如果我有一个 10 核、20 个线程的 CPU,我的池中最多应该生成 19 个工作线程。

,

不确定,但大多数建议的数量取决于 CPU 的数量。

例如,节点使用 4 个工作线程。

in workerpool 默认的 maxWorkers 数是 CPU 数减 1。当无法确定 CPU 数量时,maxWorkers 设置为 3。