This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris-website.git
The following commit(s) were added to refs/heads/master by this push:
new c80c54d10c2 [fix](ci) add swap space in deploy workflows to avoid
runner OOM kills (#4030)
c80c54d10c2 is described below
commit c80c54d10c29ee68a633742f804326cbf3124d12
Author: Mingyu Chen (Rayner) <[email protected]>
AuthorDate: Mon Aug 3 09:47:41 2026 +0800
[fix](ci) add swap space in deploy workflows to avoid runner OOM kills
(#4030)
## What & Why
The `Cron Deploy` and `Manual Deploy And Upload To OSS` jobs have been
failing intermittently for the past several days (e.g.
[30743875275](https://github.com/apache/doris-website/actions/runs/30743875275),
[30751563874](https://github.com/apache/doris-website/actions/runs/30751563874)),
and went into a consecutive-failure streak on Aug 2.
Diagnosis from the run logs:
- Every failure ends with `##[error]The runner has received a shutdown
signal` in the middle of the Build step — the runner VM itself is
killed, not a build error and not a workflow timeout.
- The same commit (`3862366c`) both passed and failed repeatedly across
Aug 1–2, and the runner image version is identical between passing and
failing runs (ubuntu-24.04 / 20260720.247.2), ruling out code or image
changes.
- Failures consistently happen during the memory-heaviest phase (en
static generation finished, zh-CN webpack build in progress), after
several minutes of log silence, and with no `JavaScript heap out of
memory` error — the classic signature of system-level memory exhaustion
killing the runner service: the main node process is allowed
`--max-old-space-size=8192` and the webpack/terser worker processes push
the total past the standard runner's 16G physical memory.
## Fix
Add an extra 8G swapfile before the Build step in both deploy workflows,
so memory spikes spill into swap instead of getting the VM OOM-killed:
- The swapfile is placed on the `/mnt` data disk (~65G free) instead of
the root disk, which the workspace and build output already fill; named
`swapfile2` because the runner image ships a built-in 4G `/mnt/swapfile`
— total 12G swap after this change.
- `free -h` / `swapon --show` output is printed so future failures can
be triaged against the memory baseline directly from the logs.
This is a mitigation for the flaky OOM kills. A follow-up improvement
worth considering is splitting `docusaurus build --locale en --locale
zh-CN` into two separate invocations so each locale's peak memory is
isolated in its own process.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: morningman <[email protected]>
Co-authored-by: Claude Fable 5 <[email protected]>
---
.github/workflows/cron-deploy-website.yml | 9 +++++++++
.github/workflows/manual-deploy-website.yml | 9 +++++++++
2 files changed, 18 insertions(+)
diff --git a/.github/workflows/cron-deploy-website.yml
b/.github/workflows/cron-deploy-website.yml
index d4073cd7e04..8d1dccaa03f 100644
--- a/.github/workflows/cron-deploy-website.yml
+++ b/.github/workflows/cron-deploy-website.yml
@@ -32,6 +32,15 @@ jobs:
with:
node-version: 20
+ - name: Add Swap Space
+ run: |
+ sudo fallocate -l 8G /mnt/swapfile2
+ sudo chmod 600 /mnt/swapfile2
+ sudo mkswap /mnt/swapfile2
+ sudo swapon /mnt/swapfile2
+ free -h
+ swapon --show
+
- name: Build
env:
GITHUB_TOKEN: ${{ github.token }}
diff --git a/.github/workflows/manual-deploy-website.yml
b/.github/workflows/manual-deploy-website.yml
index c79e7433508..c8cb0497ee2 100644
--- a/.github/workflows/manual-deploy-website.yml
+++ b/.github/workflows/manual-deploy-website.yml
@@ -36,6 +36,15 @@ jobs:
with:
node-version: 20
+ - name: Add Swap Space
+ run: |
+ sudo fallocate -l 8G /mnt/swapfile2
+ sudo chmod 600 /mnt/swapfile2
+ sudo mkswap /mnt/swapfile2
+ sudo swapon /mnt/swapfile2
+ free -h
+ swapon --show
+
- name: Build
env:
GITHUB_TOKEN: ${{ github.token }}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]