@@ -19,18 +19,16 @@ data:
1919 NODE_ENV : " production"
2020 # Bump Node's old-space heap ceiling above the default (~400Mi on Linux
2121 # containers) so the in-memory record set + secondary indices + FTS fit.
22- # Keep ~25% headroom below the container's memory limit for ephemeral
23- # work (request handling, gitsheets tree mutations, etc.).
2422 #
25- # 2048 (was 1536 ): a fresh boot rebuilding in-memory state from the full
26- # `published` import (~31.8k people + ~10.4k tag-assignments + secondary
27- # indices) OOM'd at the 1536 ceiling. The native FTS5 store is off-heap;
28- # the V8 heap holds the record maps + indices. 2048 boots cleanly and runs
29- # stable; it is deliberately kept modest because these nodes are only
30- # ~3.9Gi — an earlier 3072/3.5Gi trial let the pod grow until it starved
31- # the node's kubelet (NodeNotReady). See the memory-optimization issue for
32- # the (suspiciously large ~60x) on-disk-to-heap expansion worth reducing .
33- NODE_OPTIONS : " --max-old-space-size=2048 "
23+ # 512 (was 2048 ): gitsheets 1.4.1 switched the TOML parser to smol-toml,
24+ # fixing the #132 heap blowup at its root (@iarna's parser pinned ~12x each
25+ # record's source in V8 sliced/cons-strings). A full boot from the
26+ # `published` import now measures ~123Mi heap / ~321Mi RSS (FTS5 is off-heap
27+ # and tiny, ~40Mi). 512 is ~4x the measured boot heap — ample for request
28+ # handling + gitsheets tree mutations — while leaving the node (~3.9Gi) most
29+ # of its memory back. The earlier 2048/2.5Gi was sized for the leak, not the
30+ # real working set .
31+ NODE_OPTIONS : " --max-old-space-size=512 "
3432 PORT : " 3001"
3533 STORAGE_BACKEND : " filesystem"
3634 # The runtime-served branch. `published` is the long-term sandbox + prod
0 commit comments