From 921d4e39fabff6b1ee2e57e69161fe8e72aa4ea3 Mon Sep 17 00:00:00 2001 From: Joakim Olsson Date: Tue, 19 May 2026 06:54:22 +0200 Subject: [PATCH] fix: raise Node heap cap to 512MB and bump pod memory limit The Dockerfile's NODE_OPTIONS=--max-old-space-size=64 was added to keep idle Node memory low, but in practice it OOMs wgc router compose as soon as the supergraph has more than a handful of subgraphs: FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory Bake the higher cap into the image and raise the container memory limit (k8s/deploy.yaml) so the cgroup doesn't kill the pod at the new ceiling. Memory request stays modest so the pod still schedules tightly when idle. The live k8s.unbound.se cluster was already patched in place (kubectl set env + set resources). This commit makes the manifest match. --- Dockerfile | 6 ++++-- k8s/deploy.yaml | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6c8c289..489d1f9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -30,8 +30,10 @@ ENV TZ Europe/Stockholm # Install wgc CLI globally for Cosmo Router composition RUN npm install -g wgc@latest -# Cap Node.js heap for runtime wgc invocations to prevent OOM -ENV NODE_OPTIONS="--max-old-space-size=64" +# Cap Node.js heap for runtime wgc invocations. 512MB leaves room for +# composing supergraphs with many subgraphs; lower caps (e.g. 64MB) OOM +# wgc as the subgraph count grows. +ENV NODE_OPTIONS="--max-old-space-size=512" # Copy timezone data and certificates COPY --from=build /usr/share/zoneinfo /usr/share/zoneinfo diff --git a/k8s/deploy.yaml b/k8s/deploy.yaml index 7c55136..721a1cc 100644 --- a/k8s/deploy.yaml +++ b/k8s/deploy.yaml @@ -43,7 +43,9 @@ spec: resources: requests: cpu: "20m" - memory: "20Mi" + memory: "128Mi" + limits: + memory: "768Mi" livenessProbe: httpGet: path: /health/live -- 2.52.0