Pjo*_*kov 9 google-chrome headless cpu-usage node.js puppeteer
我在nodejs中有一个抓取算法,其中puppeteer同时刮擦5个页面,当它完成一个页面时,它从队列中拉出下一个url并在同一页面中打开它.CPU始终为100%.如何让puppeteer使用更少的CPU?
此过程在具有4gb RAM和2个vCPU的digitaloceans droplet上运行.
我用一些args启动了puppeteer实例,试图让它更轻但没有任何反应
puppeteer.launch({
args: ['--no-sandbox', "--disable-accelerated-2d-canvas","--disable-gpu"],
headless: true,
});
Run Code Online (Sandbox Code Playgroud)
我可以提供任何其他args以减少CPU饥饿吗?
我也阻止了图片加载
await page.setRequestInterception(true);
page.on('request', request => {
if (request.resourceType().toUpperCase() === 'IMAGE')
request.abort();
else
request.continue();
});
Run Code Online (Sandbox Code Playgroud)
Edi*_*nto 20
我的默认参数,请测试它并告诉我它是否运行顺利。
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)
Run Code Online (Sandbox Code Playgroud)
有几个因素可以影响这一点。首先,检查您正在访问的网站是否使用大量 CPU。像画布和其他脚本这样的东西很容易耗尽你的CPU,特别是在使用画布时。
如果您使用 docker 进行部署,请确保使用dumb-init. 这里有一个很好的存储库,解释了为什么要使用这样的东西,但本质上,在处理终止时,在 docker 映像中分配的进程 ID 会出现一些问题:
EXPOSE 8080
ENTRYPOINT ["dumb-init", "--"]
CMD ["yarn", "start"]
Run Code Online (Sandbox Code Playgroud)
这是我在browserless.io上看到并修复的问题,因为我使用 docker 来处理部署,CPU 使用率就是其中之一。
| 归档时间: |
|
| 查看次数: |
2825 次 |
| 最近记录: |