1

我正在使用 docusaurus v2.0.0-alpha.39 生成文档,并使用 bitbucket 管道来构建所有内容并将其推送到 AWS。

问题是我Container 'Build' exceeded memory limit.在执行yarn build命令时遇到了问题。

bitbucket-pipelines.yml中,我已经尽可能地增加了内存(构建为 7680mb,docker 为 512mb):

deploy: &deploy
    size: 2x
    name: Deploy
    caches:
      - node
    script:
      - yarn
      - yarn build

我还尝试通过--max-old-space-size=7168各种方式设置来限制节点内存使用:

{
  "scripts": {
    "build": "cross-env NODE_OPTIONS=--max-old-space-size=7168 node node_modules/@docusaurus/core/bin/docusaurus build"
  }
}
{
  "scripts": {
    "build": "NODE_OPTIONS=--max-old-space-size=7168 node node_modules/@docusaurus/core/bin/docusaurus build"
  }
}
{
  "scripts": {
    "build": "node --max-old-space-size=7168 node_modules/@docusaurus/core/bin/docusaurus build"
  }
}

但无论我把什么作为最大变量,我的节点进程都会上升并使用多达 14GB 的内存!如果我放一个“小”--max-old-space-size,我会得到:

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

我不得不承认我有相当大的文档(每个版本 6,3 MB 和 1.493 个项目),但我什至无法使用 docusaurus 对它们进行版本控制,每个版本都会增加 4/5GB 的内存使用量......

您对此有潜在的解决方案吗?

4

1 回答 1

0

你的文档有多大?数量明智和大小明智。不看回购就很难说出任何事情,我们需要更多信息。我们严重依赖 Webpack 及其生态系统,如果泄漏是由于 Docusaurus 代码本身还是依赖关系,很难追踪。例如,terser(被数以百万计的 repo 使用)最近发生了内存泄漏,导致大量 repo 的堆内存不足。

于 2019-12-24T06:43:27.873 回答