Server

503 Service Unavailable — Deliberate or Overloaded?

Updated 2026-08-29~7 min read

A 503 Service Unavailable is unusual among server errors because it is frequently deliberate. The machine is running, the web server is answering, and it is telling you — correctly and politely — that it is not going to serve this request at the moment. That is very different from a crash.

The first job is therefore to work out which kind of 503 you have: someone put the site into maintenance mode on purpose, or the server is refusing work because it cannot cope. The fixes have nothing in common, so guessing wrong wastes the whole afternoon.

What a 503 Means

The status code means "temporarily unavailable". It is explicitly a short-term condition, which is why it is the correct code to return during planned maintenance and the reason search engines treat it more gently than other errors.

A well-configured 503 also carries a Retry-After header telling clients when to come back. Most sites omit it, but it is worth setting during planned work: search engines respect it and will schedule their next crawl accordingly instead of guessing.

💡 If you are taking a site down on purpose, returning 503 rather than a 404 or a redirect is the correct behaviour. It says "come back later" instead of "this is gone".

Which Kind Is It?

These two look identical to a visitor and are opposites underneath. A few observations separate them quickly.

CluePlanned maintenanceServer cannot cope
The page itselfA designed message: "back soon"A plain server error page
ConsistencyEvery visitor, every page, all the timeComes and goes; some requests succeed
TimingStarts and ends at a chosen momentFollows traffic — peaks and recoveries
Server loadNormalCPU or memory at the limit
Who knows about itSomeone on the team scheduled itNobody expected it
💡 The most reliable single test is consistency. Deliberate maintenance is on or off. Overload flickers — reload a few times and some requests will get through.

Common Causes When It Is Not Intentional

  • The server has run out of workers. All PHP-FPM or Apache processes are busy and the queue is full, so new requests are rejected immediately rather than queued forever.
  • A traffic spike beyond what the plan allows. A campaign, a viral post, or a scraper hitting the site hard enough to look like one.
  • Shared hosting resource limits. Most shared plans cap concurrent processes per account and return 503 when you exceed it — often because of a neighbour's activity as much as your own.
  • A stuck WordPress update. A failed core or plugin update can leave a .maintenance file behind, and WordPress keeps serving 503 until it is deleted.
  • A crashed backend that a supervisor is restarting. During the restart window the front server has nothing to talk to and returns 503.
  • A DDoS or aggressive bot traffic. Protection systems return 503 by design when they decide to shed load.
  • A database that has hit its connection limit, causing the application to fail health checks.

What to Do

  • Check whether anyone planned it. Ask the team, check the host's status page, and look for a maintenance plugin left switched on. This takes a minute and avoids hours of pointless debugging.
  • On WordPress, check for a file named .maintenance in the site root. A failed update leaves it behind; deleting it brings the site straight back.
  • Look at server load — CPU, memory, and the number of running processes. If the machine is saturated, that is your answer and no configuration change will help until the load drops or the machine gets bigger.
  • Check the error log for the front server. Nginx records "no live upstreams" and similar messages that say precisely which backend is refusing work.
  • Look at traffic. If the 503s track your visitor graph, it is capacity. If they are constant regardless of traffic, it is configuration.
  • On shared hosting, look at the resource-usage page in the control panel. Most panels show how often you have hit the concurrent-process limit, which turns a vague problem into a number.
  • Add a Retry-After header if you are doing planned work, so crawlers know when to return.

What a 503 Does to SEO

This is the one server error Google explicitly prefers you to use. When Googlebot receives a 503 it understands the situation is temporary: it keeps the page in the index and comes back later rather than treating the URL as broken.

That protection is time-limited. A few hours is genuinely safe. Several days of continuous 503s and Google begins treating the situation as permanent, at which point pages start dropping out of the index and recovering takes considerably longer than the outage did.

The practical guidance for planned maintenance: return a real 503 status rather than a 200 page saying "we are down", include a Retry-After header, and keep the window as short as you can. A maintenance page served with a 200 is the worst of both worlds — Google indexes "we are down" as the content of your page.

Hitting your hosting plan's process limit?

Cloud VPS with dedicated CPU and RAM — your traffic limits are yours alone, not shared with the account next door. From ฿150/month.

Frequently Asked Questions

How long can a site stay 503 before it hurts?

Hours are fine and Google handles them gracefully. Days are the risk zone — crawling slows and pages begin to drop out. If you know maintenance will run long, it is worth using a staging site and switching over rather than leaving production returning 503 for days.

My WordPress site is stuck on "briefly unavailable for scheduled maintenance".

That is the .maintenance file left behind by an update that failed partway through. Delete it from the site root over FTP or File Manager and the site returns immediately. Then check whether the update actually completed before you run it again.

I keep getting 503s at the same time every day. Why?

Something scheduled is consuming the server at that hour — a backup, a cron job, a report, or an import. Find the schedule and either move it to a quieter time or make it lighter. Shared hosting neighbours running their own backups can do this to you too, which is one of the arguments for a VPS.