我想知道是否在集群模式下运行节点进程是否也意味着我正在运行多个类实例和超时循环。最令人关注的实例之一是puppeteer,它可以访问外部网站来获取信息并更新我们的数据库。
我正在AWS的t2.medium上运行它。如果我在群集模式下运行节点应用程序,它会消耗CPU使用率吗?
不幸的是,我本人无法对此进行广泛测试。我在天堂里没有足够的权限,如果我用光了我所有的CPU学分,那剩下的时间我什么也做不了。
答案 0 :(得分:1)
是,如果您以集群模式运行应用程序,则PM2将使用Node.js Cluster module为每个实例生成一个线程。如果您在每个实例中都启动一个浏览器,则可以快速添加并可能像您所说的那样“消耗CPU”。
您可以使用-i
参数(docs)限制正在运行的实例数:
示例(将工人人数限制为2):
pm2 start crawler.js -i 2
请记住,随着浏览器进行实际工作,您的Node.js实例将或多或少处于空闲状态(假设您在那里没有进行任何复杂的计算)。使用库来处理pool of browsers可能是一种选择(免责声明:我是链接库的作者)。这将使处理多个浏览器的复杂性进入您的应用程序,从而在测试和删除PM2群集模式的“复杂性层”时更容易估计应用程序的内存/ CPU使用率。