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
502 Bad Gateway server error
A gateway or proxy received an invalid response from the upstream server.
504 Gateway Timeout server error
A gateway or proxy timed out waiting for a response from the upstream server.
429 Too Many Requests client error
You're being rate limited — slow down and try again after the specified time.
500 Internal Server Error server error
Something went wrong on the server side — usually an unhandled exception.
501 Not Implemented server error
Server doesn't support the functionality required to fulfill the request.
← All HTTP status codes · HTTP status cheat sheet · HTTP headers reference