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