node.js - Chrome Headless puppeteer 占用太多 CPU

标签 node.js google-chrome cpu-usage headless puppeteer

我在 nodejs 中有一个带有 puppeteer 的抓取算法,它同时抓取 5 个页面,当它完成一个页面时,它从队列中拉出下一个 url 并在同一页面中打开它。 CPU 始终处于 100%。如何让 puppeteer 使用更少的 cpu?

此进程在具有 4gb RAM 和 2 个 vCPU 的 digitaloceans droplet 上运行。

我已经用一些参数启动了 puppeteer 实例,试图让它更轻,但没有任何反应

 puppeteer.launch({
    args: ['--no-sandbox', "--disable-accelerated-2d-canvas","--disable-gpu"],
    headless: true,
  });

我可以提供任何其他参数来减少 CPU 消耗吗?

我也阻止了图片加载

await page.setRequestInterception(true);
page.on('request', request => {
  if (request.resourceType().toUpperCase() === 'IMAGE')
    request.abort();
  else
    request.continue();
});

最佳答案

我的默认参数,请测试它并告诉我它是否运行顺利。 请注意,--no-sandbox 在导航到易受攻击的网站时并不安全,但如果您正在测试自己的网站或应用程序,则可以。因此,请确保您知道自己在做什么。

  const options = {
    args: [
      '--no-sandbox',
      '--disable-setuid-sandbox',
      '--disable-dev-shm-usage',
      '--disable-accelerated-2d-canvas',
      '--no-first-run',
      '--no-zygote',
      '--single-process', // <- this one doesn't works in Windows
      '--disable-gpu'
    ],
    headless: true
  }

  return await puppeteer.launch(options)

关于node.js - Chrome Headless puppeteer 占用太多 CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49008008/

相关文章:

javascript - Mysql Node.js 异步,等待查询完成

javascript - Node.js服务器上的3D模型

c++ - 使用 C++ 在 Windows 中检索 CPU 负载百分比总数

PHP 尖峰 cpu 使用率

ASP.NET HttpWebRequest 停止发送请求,CPU 使用率高

javascript - "Window.onload"无法在 Node.js 中工作

javascript - NPM Pack/Nodejitsu 忽略隐藏的 Node_modules 文件夹

javascript - 通过限制 Google V8 中的 Javascript 支持来创建更简单的、特定领域的语言?

javascript - 如何通过javascript跨域?

html - Chrome 不一致渲染元素有偏移