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

基于Node.js的ECS服务报错时占满6.8GB磁盘空间求助

解决ECS上Puppeteer触发磁盘暴增占满问题

核心排查方向

  • 检查Puppeteer临时文件存储路径:Puppeteer默认会存放Chrome缓存、页面数据,若应用目录被设为临时存储路径,报错时可能未自动清理这些文件。
  • 对比两台ECS的存储挂载配置:有问题的ECS可能未给临时目录配置tmpfs(内存挂载,重启自动清理),或应用目录挂载的磁盘分区容量过小;正常ECS可能已配置这类自动清理机制。
  • 核查Puppeteer错误处理逻辑:报错时若未执行browser.close()关闭浏览器实例,会导致Chrome进程残留,持续写入日志或缓存文件。
  • 检查容器日志配置:若容器日志(如Docker的json-file日志)存储在应用目录,报错时大量日志输出会快速占满磁盘;正常ECS可能配置了日志轮转或外部存储。

具体解决步骤

  1. 强制指定Puppeteer临时目录到系统tmp分区
    启动Puppeteer时显式设置缓存和用户数据目录到系统临时分区(通常/tmp会配置自动清理):

    let browser;
    try {
      browser = await puppeteer.launch({
        args: [
          '--disable-dev-shm-usage', // 规避/dev/shm空间限制,改用临时文件存储
          '--disk-cache-dir=/tmp/chrome-cache',
          '--media-cache-dir=/tmp/chrome-cache'
        ],
        userDataDir: '/tmp/chrome-user-data'
      });
      // 业务逻辑代码
    } catch (err) {
      console.error('Puppeteer操作失败:', err);
    }
    
  2. 确保报错时必清理浏览器实例
    用try/finally包裹Puppeteer操作,保证无论是否报错都关闭浏览器:

    let browser;
    try {
      browser = await puppeteer.launch(/* 配置参数 */);
      // 页面操作逻辑
    } catch (error) {
      console.error('页面操作报错:', error);
    } finally {
      if (browser) {
        await browser.close();
      }
    }
    
  3. 调整ECS/容器的存储挂载策略

    • 给有问题的ECS添加--tmpfs /tmp或--mount type=tmpfs,destination=/tmp的Docker运行参数,将临时目录挂载为内存文件系统,避免磁盘占用。
    • 若应用目录挂载的磁盘容量有限,配置磁盘配额限制应用目录的最大使用空间。
  4. 添加缓存和残留进程清理机制
    在应用启动脚本或定时任务中添加清理逻辑:

    # 清理Chrome缓存和用户数据
    rm -rf /tmp/chrome-cache/* /tmp/chrome-user-data/*
    # 杀死残留的Chrome进程
    pkill -f chrome || true
    
  5. 配置容器日志轮转
    修改Docker的daemon.json文件,启用日志轮转限制:

    {
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "10m",
        "max-file": "3"
      }
    }
    

验证方案

  • 在有问题的ECS上部署修改后的代码,触发报错场景,实时监控磁盘使用情况,确认不再出现暴增。
  • 统一两台ECS的挂载配置和Docker参数后,重复测试报错场景,验证一致性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:12:09