Skip to content

Generating sitemap hangs on for more than 25 minutes when Docker build 4000+ pages, and failed when local build. #5008

@jaggerwang

Description

@jaggerwang

Describe the bug

The previous steps takes about 5 minutes, and then it hangs on generating sitemap, memory usage is more than 6GB on MackBook Pro 14 2021. Vitepress version is v1.4.1, it's the same after after upgrade to v1.6.4. Is there any way to optimize the building time and memory usage?

Docker build

➜  portal git:(main) docker build -t muming-portal .
[+] Building 1935.8s (40/49)                                                                                                                                                                                           docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                                                                                                                   0.0s
 => => transferring dockerfile: 2.34kB                                                                                                                                                                                                 0.0s
 => [internal] load metadata for registry.cn-shanghai.aliyuncs.com/jaggerwang/nginx:1.26                                                                                                                                               1.8s
 => [internal] load metadata for registry.cn-shanghai.aliyuncs.com/jaggerwang/node:22                                                                                                                                                  1.4s
 => [auth] jaggerwang/nginx:pull token for registry.cn-shanghai.aliyuncs.com                                                                                                                                                           0.0s
 => [auth] jaggerwang/node:pull token for registry.cn-shanghai.aliyuncs.com                                                                                                                                                            0.0s
 => [internal] load .dockerignore                                                                                                                                                                                                      0.0s
 => => transferring context: 88B                                                                                                                                                                                                       0.0s
 => [builder  1/23] FROM registry.cn-shanghai.aliyuncs.com/jaggerwang/node:22@sha256:f5b7f1520bcddf9a9ab0e405e84ef48377377580e87c4775bfa65ebdd8e281bb                                                                                  0.0s
 => [builder 16/23] ADD https://bucket-muming-common.mumingerlai.net/prod/operations/page/venue/basketball.zip venue-basketball.zip                                                                                                    1.0s
 => [builder  9/23] ADD https://bucket-muming-common.mumingerlai.net/prod/operations/page/coach/swimming.zip coach-swimming.zip                                                                                                        0.8s
 => [builder 15/23] ADD https://bucket-muming-common.mumingerlai.net/prod/operations/page/venue/badminton.zip venue-badminton.zip                                                                                                      1.1s
 => [stage-1  1/12] FROM registry.cn-shanghai.aliyuncs.com/jaggerwang/nginx:1.26@sha256:9018b2392d0db980b6c5d48fcae193183777fbe09950582cee80282bfd7fb54c                                                                               0.0s
 => [builder 14/23] ADD https://bucket-muming-common.mumingerlai.net/prod/operations/page/venue/tennis.zip venue-tennis.zip                                                                                                            0.8s
 => [builder  8/23] ADD https://bucket-muming-common.mumingerlai.net/prod/operations/page/coach/badminton.zip coach-badminton.zip                                                                                                      1.0s
 => [builder  7/23] ADD https://bucket-muming-common.mumingerlai.net/prod/operations/page/coach/tennis.zip coach-tennis.zip                                                                                                            1.0s
 => [builder 17/23] ADD https://bucket-muming-common.mumingerlai.net/prod/operations/page/venue/football.zip venue-football.zip                                                                                                        0.7s
 => [internal] load build context                                                                                                                                                                                                      0.2s
 => => transferring context: 1.10MB                                                                                                                                                                                                    0.2s
 => CACHED [stage-1  2/12] WORKDIR /app                                                                                                                                                                                                0.0s
 => CACHED [builder  2/23] WORKDIR /app                                                                                                                                                                                                0.0s
 => CACHED [builder  3/23] COPY package*.json ./                                                                                                                                                                                       0.0s
 => CACHED [builder  4/23] RUN npm config set registry https://registry.npmmirror.com                                                                                                                                                  0.0s
 => CACHED [builder  5/23] RUN npm install                                                                                                                                                                                             0.0s
 => [builder  6/23] COPY . .                                                                                                                                                                                                           0.8s
 => [stage-1  3/12] COPY nginx/nginx.conf /etc/nginx/nginx.conf                                                                                                                                                                        0.1s
 => [stage-1  4/12] COPY nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf                                                                                                                                                      0.0s
 => [builder  7/23] ADD https://bucket-muming-common.mumingerlai.net/prod/operations/page/coach/tennis.zip coach-tennis.zip                                                                                                            0.0s
 => [builder  8/23] ADD https://bucket-muming-common.mumingerlai.net/prod/operations/page/coach/badminton.zip coach-badminton.zip                                                                                                      0.0s
 => [builder  9/23] ADD https://bucket-muming-common.mumingerlai.net/prod/operations/page/coach/swimming.zip coach-swimming.zip                                                                                                        0.0s
 => [builder 10/23] RUN rm -rf coach                                                                                                                                                                                                   0.2s
 => [builder 11/23] RUN unzip coach-tennis.zip -d coach                                                                                                                                                                                0.2s
 => [builder 12/23] RUN unzip coach-badminton.zip -d coach                                                                                                                                                                             0.3s
 => [builder 13/23] RUN unzip coach-swimming.zip -d coach                                                                                                                                                                              0.2s
 => [builder 14/23] ADD https://bucket-muming-common.mumingerlai.net/prod/operations/page/venue/tennis.zip venue-tennis.zip                                                                                                            0.0s
 => [builder 15/23] ADD https://bucket-muming-common.mumingerlai.net/prod/operations/page/venue/badminton.zip venue-badminton.zip                                                                                                      0.0s
 => [builder 16/23] ADD https://bucket-muming-common.mumingerlai.net/prod/operations/page/venue/basketball.zip venue-basketball.zip                                                                                                    0.0s
 => [builder 17/23] ADD https://bucket-muming-common.mumingerlai.net/prod/operations/page/venue/football.zip venue-football.zip                                                                                                        0.0s
 => [builder 18/23] RUN rm -rf venue                                                                                                                                                                                                   0.2s
 => [builder 19/23] RUN unzip venue-tennis.zip -d venue                                                                                                                                                                                0.2s
 => [builder 20/23] RUN unzip venue-badminton.zip -d venue                                                                                                                                                                             0.4s
 => [builder 21/23] RUN unzip venue-basketball.zip -d venue                                                                                                                                                                            0.2s
 => [builder 22/23] RUN unzip venue-football.zip -d venue                                                                                                                                                                              0.2s
 => [builder 23/23] RUN npm run build                                                                                                                                                                                               1930.6s
 => => # - Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
 => => # - Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
 => => # ✓ building client + server bundles...
 => => # - rendering pages...
 => => # ✓ rendering pages...
 => => # - generating sitemap...
^C%
Image

Local build

➜  portal git:(main) ✗ npm run build

> build
> vitepress build


  vitepress v1.6.4

⠙ building client + server bundles...
(!) Some chunks are larger than 500 kB after minification. Consider:
- Using dynamic import() to code-split the application
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
✓ building client + server bundles...
✓ rendering pages...
✖ generating sitemap...
build error:
spawn EBADF
Error: spawn EBADF
    at ChildProcess.spawn (node:internal/child_process:420:11)
    at Object.spawn (node:child_process:753:9)
    at Function.spawn (file:///Users/jagger/projects/muming/portal/node_modules/vitepress/dist/node/chunk-D3CUZ4fa.js:36493:25)
    at file:///Users/jagger/projects/muming/portal/node_modules/vitepress/dist/node/chunk-D3CUZ4fa.js:36532:37
    at new Promise (<anonymous>)
    at getGitTimestamp (file:///Users/jagger/projects/muming/portal/node_modules/vitepress/dist/node/chunk-D3CUZ4fa.js:36531:10)
    at getLastmod (file:///Users/jagger/projects/muming/portal/node_modules/vitepress/dist/node/chunk-D3CUZ4fa.js:49329:18)
    at file:///Users/jagger/projects/muming/portal/node_modules/vitepress/dist/node/chunk-D3CUZ4fa.js:49353:55
    at Array.map (<anonymous>)
    at file:///Users/jagger/projects/muming/portal/node_modules/vitepress/dist/node/chunk-D3CUZ4fa.js:49351:35

package.json

{
  "devDependencies": {
    "vitepress": "^1.6.4"
  },
  "scripts": {
    "dev": "vitepress dev --host 0.0.0.0",
    "build": "vitepress build",
    "preview": "vitepress preview"
  }
}

Reproduction

Create more than 4000 pages and build.

Expected behavior

Build successfully.

System Info

System:
    OS: macOS 26.0.1
    CPU: (8) arm64 Apple M1 Pro
    Memory: 95.23 MB / 16.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 22.16.0 - /opt/homebrew/opt/node@22/bin/node
    npm: 10.9.2 - /opt/homebrew/opt/node@22/bin/npm
    Watchman: 2025.05.26.00 - /opt/homebrew/bin/watchman
  Browsers:
    Chrome: 141.0.7390.123
    Safari: 26.0.1
  npmPackages:
    vitepress: ^1.6.4 => 1.6.4

Additional context

No response

Validations

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions