From 208d307e5a7040125305a489ff1f3850fcb8c9ee Mon Sep 17 00:00:00 2001 From: Cristian Felipe Cruz Buitron Date: Sat, 15 Aug 2026 15:02:01 -0500 Subject: [PATCH] fix(gitea-runner): limites de recursos reales para el runner El contenedor gitea-runner se creaba sin ningun limite de CPU/memoria (docker run plano), compitiendo directamente con gitea (que ademas tenia cpu-shares=90, muy por debajo del default de Docker de 1024). Causa raiz confirmada en vivo el 2026-08-15: durante un build pesado de commerce-backend, tanto gitea como gitea-runner se reiniciaron solos (ExitCode=0, RestartCount=0 en ambos -- restart limpio disparado externamente, no un crash) coincidiendo con 502 Bad Gateway del runner y memoria del host casi agotada. Mismo patron ya visto y documentado en incidentes anteriores (2026-07-30, 2026-08-11). Se agrega --cpu-shares 512 (menos prioridad relativa que gitea) y --memory 8g / --memory-swap 10g al runner. El fix de cpu-shares de gitea (90 -> 1024) va en docker-compose.yml, fuera de este repo -- no tengo acceso de escritura root a ese archivo, queda para aplicar manualmente. Este cambio solo afecta a la proxima creacion del contenedor (create_gitea_runner_container es idempotente); no se aplica solo al contenedor que ya esta corriendo. --- deploy-lab.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/deploy-lab.sh b/deploy-lab.sh index b4019cd..227da3e 100644 --- a/deploy-lab.sh +++ b/deploy-lab.sh @@ -3062,9 +3062,20 @@ create_gitea_runner_container() { log "Creando contenedor ${GITEA_RUNNER_CONTAINER}" + # cpu-shares/memory: sin esto el runner corria sin ningun limite, + # compitiendo por CPU/memoria con el propio contenedor de Gitea + # (que ademas tenia cpu-shares=90, muy por debajo del default de + # Docker) -- causa raiz confirmada en vivo de reinicios de ambos + # contenedores durante builds pesados (ver docs/playbooks). El + # runner queda con menos prioridad relativa que Gitea (512 vs 1024) + # y con un techo de memoria real para no arrastrar al host entero a + # swap con un solo job. docker run -d \ --name "$GITEA_RUNNER_CONTAINER" \ --restart unless-stopped \ + --cpu-shares 512 \ + --memory 8g \ + --memory-swap 10g \ -v "${GITEA_RUNNER_DATA_DIR}:/data" \ -v /var/run/docker.sock:/var/run/docker.sock \ -e "GITEA_INSTANCE_URL=${GITEA_INSTANCE_URL}" \