Egress gateway OOMs on large downloads and never restarts, dropping egress for every bottle #455
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
A single large HTTPS download through the shared egress gateway kills the proxy.
mitmdumpbuffers whole response bodies so the DLP detectors can scan them, grows past the gateway container's memory limit, and is OOM-killed by the cgroup. Nothing restarts it.Two properties make this worse than a failed download:
while : ; do wait ; done; a killedmitmdumpstays dead until the infra container is recreated. The container still looks healthy (orchestrator, supervise, git-http all alive), so a container liveness check does not catch it.So ordinary agent activity — pulling a container image, downloading a model/dataset, fetching a large tarball — is a denial of service against every other bottle on the host. No malice required, though it is trivially reachable on purpose.
Evidence
Found 2026-07-21 during the rootless-podman spike (#392). Triggered by
docker compose uppullingquay.io/fedora/python-312(~82MB + ~83MB layers) inside a bottle. The pull succeeded; the next request failed withconnection refusedto the proxy. From the gatewaydmesg:~1GB RSS against a 1024MB container. Note the amplification: ~165MB of layers produced ~1GB resident — several buffered copies deep (encoded body, decoded body, and the text conversion the regex detectors scan).
Full write-up:
docs/research/egress-proxy-oom-on-large-downloads.md(branchspike/rootless-docker-macos).Fix options (not yet chosen)
Notes
Split out from #392 (comment referencing the OOM finding).