R-806: gramps-web runs 2 gunicorn workers (held — not for main tonight)

The image's default 8 workers filled the 1024M limit; workers were
OOM-killed and :5000 mostly timed out. Measured on the bench both ways.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-10-06 21:07:59 +02:00
parent 816c5577fb
commit 18599037d3
2 changed files with 14 additions and 1 deletions
+7
View File
@@ -1,3 +1,10 @@
## 2026-10-06 (night, held) — gramps-web runs 2 web workers, not 8 (R-806)
**What runs on a box changed:** gramps-web's environment. **Held on branch `night-held-2026-10-06`**, not `main` tonight.
- `templates/gramps-web/docker-compose.yml`: `GUNICORN_NUM_WORKERS=2`. Measured on the bench (v25.6.0, the template's 1024M): the image's default of 8 gunicorn workers filled the whole limit (anon 1.06 GB), the kernel killed workers (oom_kill 3 in 9 min) and 4 of 5 requests to :5000 timed out after 15 s — the persistence sweep's "no answer on :5000". With 2 workers: the first answer after 10 s, every request ~2 ms, anon 342 MB, 0 kills. The header's RAM line (~100M / 384M) was stale; it now says ~340M / 1024M.
- Evidence `felhom.eu/documentation/audits/night-burndown-2026-10-06/cat/R-806-red.txt`.
## 2026-10-06 (night, held) — the persistence gate names an empty bind (R-805)
**What runs on a box changed:** nothing. Test tools only. (Held with the night's other catalog commits on `night-held-2026-10-06`.)
+7 -1
View File
@@ -1,7 +1,7 @@
# Gramps Web - Családfa készítő és genealógiai szoftver
# Domain: ${SUBDOMAIN}.${DOMAIN}
# Database: None (file-based)
# RAM: ~100M (mem_limit: 384M) | Pi-compatible: Yes
# RAM: ~340M with 2 web workers, measured 2026-10-06 (mem_limit: 1024M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
@@ -18,6 +18,12 @@ services:
- TZ=Europe/Budapest
- GRAMPSWEB_TREE=Family Tree
- GRAMPSWEB_SECRET_KEY=${GRAMPSWEB_SECRET_KEY}
# R-806 (measured 2026-10-06 on the bench): the image starts gunicorn with 8 workers unless GUNICORN_NUM_WORKERS is set.
# Eight workers filled the whole 1024M (anon at the limit), the kernel killed workers (oom_kill 3 in
# 9 min) and most requests to :5000 timed out after 15 s — why the persistence sweep got no answer.
# Two workers: the first answer in 10 s, every request in ~2 ms, anon 342 MB, 0 kills. A household
# tree has one or two people editing at once.
- GUNICORN_NUM_WORKERS=2
volumes:
# Storage layout — every path here is named by the image's OWN environment
# (docker image inspect ghcr.io/gramps-project/grampsweb:v25.6.0 → Config.Env), and the set