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

如何在基于自定义Docker镜像的AWS Lambda中禁用核心转储?

解决Lambda中Docker镜像运行Chromium时的核心转储问题

针对你遇到的Chromium崩溃生成大体积核心转储导致Lambda磁盘耗尽的问题,以下是几种彻底禁用或有效处理的方案:

方案一:在Docker镜像构建阶段全局禁用核心转储

在自定义Docker镜像的Dockerfile中添加系统级配置,彻底禁用核心转储:

# 全局设置核心转储限制为0
RUN echo "* soft core 0" >> /etc/security/limits.conf
RUN echo "* hard core 0" >> /etc/security/limits.conf

# 或者在Lambda启动脚本开头添加ulimit设置(若使用自定义启动脚本)
# ulimit -c 0

构建镜像时应用这些配置,容器启动后所有进程(包括Chromium)都会继承核心转储禁用的规则。

方案二:通过Chromium启动参数禁用崩溃转储

Chromium支持通过启动参数关闭崩溃报告和核心转储生成,在Puppeteer启动Chromium时添加以下参数:

const browser = await puppeteer.launch({
  args: [
    '--disable-crash-reporter',
    '--disable-breakpad',
    '--no-sandbox', // Lambda环境通常需要此参数
    '--disable-dev-shm-usage' // 同时避免共享内存不足引发的崩溃
  ],
  executablePath: await chromium.executablePath(),
});

这些参数会直接阻止Chromium在崩溃时生成核心转储文件,从根源解决问题。

方案三:Lambda函数启动时自动清理旧核心文件

如果前两种方案无法完全生效,可以在Lambda函数执行的最开始阶段,主动清理/tmp目录下的核心转储文件:

const fs = require('fs');
const path = require('path');

// 清理/tmp下的Chromium核心文件
const tmpDir = '/tmp';
fs.readdirSync(tmpDir).forEach(file => {
  if (file.startsWith('core.chromium.')) {
    fs.unlinkSync(path.join(tmpDir, file));
  }
});

这样即使有残留的核心文件,也会在每次函数调用时被清理,避免磁盘空间被持续占用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:45:40