【问题标题】:How to handle Puppeteer "Error: Page crashed!"如何处理 Puppeteer “错误:页面崩溃!”
【发布时间】:2020-09-18 15:36:48
【问题描述】:

我写的爬虫在我的电脑上完美运行,一个运行node.js v14.4.0的windows操作系统。

但是当我尝试在 Ubunto 机器上的 Digital Ocean Droplet 上运行它时,某些页面出现以下错误:Page crashed! 信息不多。

这是打印错误的代码:

const handleClose = async (msg) =>{
        console.log(msg)
        page.close();
        browser.close();
        process.exit(1);
}

process.on("uncaughtException", (reason, p) => {
        const a = `Possibly Unhandled Exception at: Promise , ${p}, reason: , ${reason}`
        handleClose(a);
});

我该如何解决这个问题? 什么可能导致它?因为它在我的 Windows PC 上运行良好。

【问题讨论】:

  • 什么尺寸的液滴?你可能需要做得更大。
  • 这是最小的尺寸,1G RAM + 1vCPU。但这还不足以废弃 1 个简单的网站吗?完成后我关闭所有页面,因此一次只打开一页。而液滴只做这个过程。

标签: node.js puppeteer chromium digital-ocean droplet


【解决方案1】:

我已经添加了所有我在网上找到的和相关的内存配置:

const args = [
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--disable-infobars',
        '--window-size=1366,768',
        '--unlimited-storage',
        '--full-memory-crash-report',
        '--disable-dev-shm-usage',
        '--force-gpu-mem-available-mb',
        '--disable-gpu'
    ]

但这并没有帮助。

感谢 pguardiario note,我只是将 Droplet 从 1G RAM 升级到 2G。 这样就成功了。

我觉得很奇怪,抓取一个简单的网站需要超过 1G,所以我猜 Puppeteer 需要大量资源才能运行。

更新 我有另一个页面迷恋,但这次它与服务器使用所有内存有关。所以我从 Puppeteer 中删除了所有这些参数:

'--unlimited-storage',
'--full-memory-crash-report',
'--disable-dev-shm-usage',
'--force-gpu-mem-available-mb',
'--disable-gpu'

只剩下基本的:

const args = [
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--disable-infobars',
        '--window-size=1366,768'
]

而且它现在很稳定。 所以,我想这需要小心使用,如果不是真的需要,请删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 2020-03-22
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多