运行 时,集群模式下的 PM2 会产生等量的 class 实例吗?

Does PM2 in cluster mode spawn an equal amount of class instances when running?

我想知道 运行 在集群模式下运行节点进程是否也意味着我正在 运行 运行多个 类 实例和超时循环。最令人担忧的实例之一是 puppeteer,它会访问外部网站以获取信息并更新我们的数据库。

我运行在 AWS 上的 t2.medium 上执行此操作。如果我 运行 我的节点应用程序处于集群模式,它会破坏 CPU 用法吗?

不幸的是,我自己无法对此进行广泛测试。我在我的天堂里没有足够的权限,如果我用完我所有的 CPU 积分,我在今天剩下的时间里什么也做不了哈哈。

,如果您运行您的应用程序处于集群模式,PM2 将使用Node.js Cluster module 为每个实例生成一个线程.如果您在每个实例中启动一个浏览器,这可能会很快加起来,并且可能 "blow up the CPU" 正如您所说的那样。

您可以使用 -i 参数 (docs) 来限制 运行ning 实例的数量:

示例(将工人数量限制为 2):

pm2 start crawler.js -i 2

请记住,您的 Node.js 实例或多或少会空闲(假设您没有在那里进行任何复杂的计算),因为浏览器正在执行实际工作。使用库来处理 pool of browsers 可能是一种选择(免责声明:我是链接库的作者)。这会将处理多个浏览器的复杂性放入您的应用程序中,从而在测试和删除 PM2 集群模式的 "complexity layer" 时更容易估计您的应用程序的 memory/CPU 使用情况。