Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Heroku 赫罗库的木偶演员,记忆错误_Heroku_Puppeteer - Fatal编程技术网

Heroku 赫罗库的木偶演员,记忆错误

Heroku 赫罗库的木偶演员,记忆错误,heroku,puppeteer,Heroku,Puppeteer,试着让Heroku做些工作。在本地,它是有效的。它很慢,但很有效。在OS X活动监视器中监视内存时,内存不会超过50MB。但是,当我将这个脚本部署到Heroku时,每次都会超过内存配额,内存占用比它大得多 查看日志,我得到了以下信息: 运行mem=561M(106.5%)的进程 错误R14(超出内存配额) 重新启动 状态从启动更改为启动 要么活动监视器没有正确报告内存,要么只有在Heroku上运行脚本时出现问题。我无法想象为什么一个25页的页面会是5.61亿页 此外,由于木偶演员脚本必须包含在t

试着让Heroku做些工作。在本地,它是有效的。它很慢,但很有效。在OS X
活动监视器中监视内存时,内存不会超过50MB。但是,当我将这个脚本部署到Heroku时,每次都会超过
内存配额,内存占用比它大得多

查看日志,我得到了以下信息:

运行mem=561M(106.5%)的进程

错误R14(超出内存配额)

重新启动

状态从启动更改为启动

要么活动监视器没有正确报告内存,要么只有在Heroku上运行脚本时出现问题。我无法想象为什么一个25页的页面会是5.61亿页


此外,由于木偶演员脚本必须包含在
try/catch
中,内存错误导致Dyno崩溃并重新启动。当Dyno重新启动时,浏览器将挂起。因此,
重新启动
没有什么好处。有没有一种方法可以捕获Heroku上的“大多数”错误,但在出现内存R14错误时抛出?

我也有类似的问题。我发现,如果不关闭浏览器,就会立即出现R14错误。我的建议是:

  • 确保使用单个浏览器实例和多个上下文,而不是多个浏览器

  • 确保在调用pdf后关闭上下文

  • 如果您正在处理大型页面,需要扩展heroku实例,那么您别无选择。不幸的是,你需要为heroku上的1GB内存支付50美元

    一些难看的代码,但它指出了这样一个事实:在调用pdf函数后,上下文是关闭的

  • browser.createIncognitoBrowserContext()。然后((上下文)=>{
    context.newPage()。然后((页面)=>{
    page.setContent(html)。然后(()=>{
    page.pdf(选项)。然后((pdf)=>{
    让inputStream=bufferToStream(pdf);
    让outputStream=fs.createWriteStream(路径);
    inputStream.pipe(outputStream).on(“finish”,()=>{
    context.close()。然后(()=>{
    解决();
    }).捕获(拒绝);
    });
    });
    }).捕获(拒绝)
    }).捕获(拒绝)
    }).捕获(拒绝)