我在 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/