You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在AWS Lambda中调用Puppeteer page.goto出现net::ERR_INSUFFICIENT_RESOURCES错误

我之前在Lambda上跑旧版本Puppeteer时也碰到过一模一样的net::ERR_INSUFFICIENT_RESOURCES问题,大概率是资源限制和环境适配的锅。给你几个针对性的解决方案,按优先级尝试:

1. 立刻提升Lambda的内存配置

Lambda的内存和CPU是绑定的,默认128MB内存完全不够跑Chromium。至少要把内存调到512MB以上,推荐直接拉到1024MB——内存上去了,CPU资源也会同步提升,能直接缓解大部分资源不足的问题。你可以在Lambda控制台的「函数配置」里直接调整内存参数。

2. 给Chromium加轻量化启动参数

旧版本Puppeteer默认的Chromium启动参数太吃资源,必须加上这些优化参数:

const browser = await puppeteer.launch({
  args: [
    '--no-sandbox',
    '--disable-setuid-sandbox',
    '--disable-dev-shm-usage', // 重点!Lambda的/dev/shm分区只有64MB,Chromium默认会耗尽它
    '--disable-gpu',
    '--single-process',
    '--no-zygote'
  ],
  headless: true
});

其中--disable-dev-shm-usage是解决这个错误的核心——它会让Chromium改用临时文件替代/dev/shm,彻底避开小分区的资源限制。

3. 优化页面加载的资源消耗

像www.gov.uk这类政府网站加载的资源很多,你可以拦截非必要请求来降低内存压力:

await page.setRequestInterception(true);
page.on('request', (req) => {
  // 拦截图片、样式、字体、媒体文件
  if (['image', 'stylesheet', 'font', 'media'].includes(req.resourceType())) {
    req.abort();
  } else {
    req.continue();
  }
});

这样能大幅减少页面加载时的资源占用。

4. 检查版本兼容性(可选但建议)

你用的Node.js 6.10.3和Puppeteer 1.2.0都是比较老的版本,虽然理论上兼容,但可能存在隐性的环境适配问题。如果条件允许,建议把Node.js升级到8.x(Lambda 2017.03支持),或者把Puppeteer升级到1.x系列的稳定版本(比如1.19.0),能减少不少奇怪的bug。

5. 确保Lambda环境依赖完整

旧版本Lambda默认缺少Chromium运行所需的系统依赖(比如libatk、libgtk等),如果前面的方法都没用,你需要把这些依赖打包到部署包里,或者用专门的插件(比如serverless-plugin-chrome)来自动处理依赖问题。

先试前三个方案,尤其是内存调整和--disable-dev-shm-usage参数,应该能快速解决问题。

内容的提问来源于stack exchange,提问作者joeformd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:36:38