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

Gatsby构建遇std::bad_alloc错误,GitLab CI任务失败求助

解决Gatsby构建std::bad_alloc导致GitLab CI失败的方案

核心原因

std::bad_alloc是内存分配失败的报错,GitLab Runner容器默认内存配额不足是最常见诱因——Gatsby构建过程中处理静态资源、数据节点时会占用大量内存。

具体解决步骤

1. 提升GitLab Runner容器内存配额

  • 打开Runner配置文件(通常路径为/etc/gitlab-runner/config.toml)
  • 在对应Runner的[[runners]]段内添加/修改Docker内存配置:
    [runners.docker]
      memory = "4096m"
      memory_swap = "8192m"
    
    (这里设置容器内存4G、交换内存8G,可根据项目规模调整)
  • 重启Runner服务:sudo gitlab-runner restart

2. 优化Gatsby构建内存占用

  • 在项目根目录的gatsby-node.js中添加Webpack性能配置,减少内存消耗:
    exports.onCreateWebpackConfig = ({ actions }) => {
      actions.setWebpackConfig({
        performance: {
          hints: false,
          maxAssetSize: 512000,
          maxEntrypointSize: 512000,
        },
      })
    }
    
  • 禁用不必要的插件,尤其是那些大量抓取数据或生成冗余节点的插件
  • 清理无用依赖:执行npm prune移除未使用的包,减轻构建负载

3. 调整GitLab CI构建脚本

  • 在gitlab-ci.yml的构建阶段添加Node.js内存限制变量:
    build:
      stage: build
      script:
        - export NODE_OPTIONS="--max-old-space-size=3072"
        - npm install
        - gatsby build
    
    该配置限制Node.js使用3G内存,避免超出容器配额

4. 排查其他潜在问题

  • 检查项目内是否有大量未优化的高分辨率图片,这类资源会大幅增加内存消耗,建议提前压缩处理
  • 尝试更换GitLab Runner使用的Docker镜像,比如官方node:18-alpine镜像,避免镜像本身的内存泄漏问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:10:16