Worker nodes in a Concourse environment transition to a stalled state, often within 24 hours of uptime. This typically occurs when container limits are reached, preventing the reporting of active container status to the Web/ATC nodes.
stalled state when running fly workers."error":"run check: find or create container on worker [Worker-ID]: max containers reached"."message":"guardian.api.garden-server.create.failed","data":{"error":"max containers reached"}.WARN - upcheck failed (on tcp: dial tcp ###.###.###.###:53: i/o timeout).use of closed network connection).A race condition or imbalance exists in container placement. If the placement strategy does not prioritize the max-containers limit, the ATC continues scheduling "Check" containers on workers already at capacity. The resulting high-load condition causes the worker to become unresponsive and stop sending heartbeats and is eventually marked as stalled.
Modify the container placement strategies in the Concourse manifest to ensure the ATC respects maximum container limits before evaluating volume locality.
check_container_placement_strategies and container_placement_strategy properties.limit-max-containers at the beginning of the list:bosh -d concourse deploy manifest.ymlfly -t <target> prune-worker -aIf immediate manifest changes are not possible:
--worker-max-containers flag to a value that matches the VM's actual resource capacity to prevent "hard" stalls.