Skip to content
Latchkey

ARC runner container "OOMKilled" in CI

The runner or dind container was terminated with OOMKilled: the job used more memory than the pod limit allowed, so the kernel killed it. The job usually ends with exit code 137.

What this error means

kubectl describe on the runner pod shows Last State Terminated with Reason OOMKilled, and the workflow step fails abruptly, often at a memory-heavy build or test.

Terminal
    Last State:     Terminated
      Reason:       OOMKilled
      Exit Code:    137

Common causes

Memory limit lower than the job needs

The runner or dind container memory limit is below the peak the build or tests require, so the kernel OOM-kills it.

A memory-heavy step inside dind

Docker builds or large test suites in the dind container can spike memory past the sidecar limit.

How to fix it

Raise the memory limit in the runner template

  1. Confirm OOMKilled from kubectl describe on the pod.
  2. Raise the memory request and limit on the runner (and dind) container.
  3. Reinstall the scale set and re-run the job.
values.yaml
template:
  spec:
    containers:
      - name: runner
        resources:
          requests: { memory: "2Gi" }
          limits: { memory: "4Gi" }

Reduce the job memory footprint

Lower build parallelism or split memory-heavy steps so the job fits under the limit.

How to prevent it

  • Size runner and dind memory limits to the heaviest expected job.
  • Monitor pod memory to spot jobs approaching the limit.
  • Split or bound memory-heavy steps in the workflow.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →