server error RFC 9110

HTTP 503 Service Unavailable

Server is temporarily unable to handle the request — overloaded or down for maintenance.

What it means

The server is refusing the request because it can't handle it right now. Different from 502 (which means the upstream is broken) — 503 comes directly from the server saying 'I'm here, I'm intentionally saying no.' Should include a `Retry-After` header. Common during deploys, maintenance windows, and traffic spikes.

When servers send it

  • Deployment in progress
  • Server is overloaded and shedding load
  • Circuit breaker open due to downstream failures
  • Kubernetes pod is starting up (readiness probe failing)

What the client does

Reads `Retry-After`. Backs off. Retries.

Common causes

  • Traffic spike overloaded the app server
  • Deploy currently rolling out
  • Database connection pool exhausted
  • Cloudflare origin is offline

How to fix it

  • 1.Scale up the service
  • 2.If deploy in progress: wait
  • 3.Check database and connection pool health
  • 4.Add caching to reduce origin load

Similar codes

← All HTTP status codes · HTTP status cheat sheet · HTTP headers reference