Fly.io Health Checks Failing

Share
Ongoing Fly.io Updated November 14, 2026Based on 2 user reportsHow we research

Quick answer

A failing service check makes Fly stop routing traffic to that Machine; it is not restarted. Add a grace period and a simple /healthz endpoint that returns 200.

Most likely fix: Add a grace period

How to fix it

Try these in order — the most common fix is first.

  1. 1. Add a grace period

    1. Under [[services.tcp_checks]] add grace_period = "10s" (raise to 15 to 30s for heavy frameworks)
    Did this fix it?
  2. 2. Use a dedicated HTTP check

    1. Add [[services.http_checks]] with a path like /healthz
    2. The endpoint must return 200 with no redirects or auth
    Did this fix it?
  3. 3. Diagnose

    1. Run fly checks list and note which section the check is in (service checks affect routing, [checks] only monitor, machine checks only gate deploys)
    2. Read fly logs for startup panics
    3. Check secrets and env vars if it only fails on Fly
    4. Restart a stuck Machine manually: fly machine restart <machine-id>
    Did this fix it?

Symptoms

fly checks list shows failing checks, users get 503s, and deploys stall or fail on machine checks.

Why it happens

  • Grace period too short for slow startup
  • Check endpoint redirects or requires auth (non-200)
  • App not listening on the checked port
  • Blocked accept loop from CPU-heavy work
  • OOM or high CPU

This guide also covers

  • fly.io health check failing
  • fly.io health checks grace period
  • fly checks list critical

Still not working?

If Fly.io keeps failing, you're not alone. See every Fly.io problem users report or the alternatives people switch to.

Have an app idea? Our small team builds any software: web and mobile apps, games, desktop, AI tools. Price agreed together.

Talk to us
Fixed it? Share this guide

Other Fly.io errors