verify-stack e2e P0: Maykin uWSGI defaults (4×4 procs) starve the shared runner #144

Closed
opened 2026-07-27 11:36:22 +00:00 by not · 0 comments
Contributor

P0 — red main. verify-stack fails on the Playwright e2e step (main runs 2177 after #142, 2190 after #143), while the PR runs (#142, #143) passed.

Symptom: nearly every e2e spec times out waiting for the Keycloak login page (#username never appears) or hits Chromium Target crashed — classic host resource starvation, not a test-logic bug. Only the fast default-fill spec passed.

Root cause: the two Maykin Django chains added in S-18a (Objecttypen) + S-18b (Objecten) run their web under uWSGI with 4 processes × 4 threads by default (UWSGI_PROCESSES:-4). That is ~8 idle Django worker processes (~1.5–2 GB RAM) sitting idle during the e2e step on the single shared self-hosted runner, starving Keycloak/the portals/Chromium. The margin was already thin; two extra chains tipped it over (green through main run 2159, red from 2177).

Fix: cap UWSGI_PROCESSES: "1" (and UWSGI_THREADS: "2") on the objecten and objecttypen services in both compose files. They only serve single-request smoke checks and are idle during e2e — 1 worker is plenty, and it frees ~1.5 GB.

No ADR: config-only tuning of existing services, no boundary or dependency change.

**P0 — red `main`.** `verify-stack` fails on the Playwright e2e step (main runs 2177 after #142, 2190 after #143), while the PR runs (#142, #143) passed. **Symptom:** nearly every e2e spec times out waiting for the Keycloak login page (`#username` never appears) or hits Chromium `Target crashed` — classic host resource starvation, not a test-logic bug. Only the fast `default-fill` spec passed. **Root cause:** the two Maykin Django chains added in S-18a (Objecttypen) + S-18b (Objecten) run their `web` under **uWSGI with 4 processes × 4 threads by default** (`UWSGI_PROCESSES:-4`). That is ~8 idle Django worker processes (~1.5–2 GB RAM) sitting idle during the e2e step on the single shared self-hosted runner, starving Keycloak/the portals/Chromium. The margin was already thin; two extra chains tipped it over (green through main run 2159, red from 2177). **Fix:** cap `UWSGI_PROCESSES: "1"` (and `UWSGI_THREADS: "2"`) on the `objecten` and `objecttypen` services in both compose files. They only serve single-request smoke checks and are idle during e2e — 1 worker is plenty, and it frees ~1.5 GB. No ADR: config-only tuning of existing services, no boundary or dependency change.
not added the type:bugarea:infra labels 2026-07-27 11:36:34 +00:00
not closed this issue 2026-07-27 13:07:56 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: eho/register-referentie#144