A 503 is the server saying "not now". It is the only 5xx that is sometimes correct: maintenance mode returns 503 on purpose, and a search engine reading it will come back later instead of dropping the page.

Is it deliberate?

  • A CMS left in maintenance mode - WordPress leaves a .maintenance file behind when an update fails halfway.
  • A rate limit doing its job, which is a 503 with a Retry-After header.
  • A deploy script that put the site behind a holding page and did not take it down.
ls -la /path/to/site/.maintenance && rm /path/to/site/.maintenance

Or has it run out?

If nothing is deliberate, the server has no capacity left to accept the request. Read the load first, because the number tells you which resource ran out.

uptime; free -m; df -h
  • Load far above your core count - too much work, not enough CPU.
  • Almost no free memory and swap in use - the box is thrashing and everything is slow.
  • A full disk - nothing can write, and most services return 503 rather than corrupt data.
A full disk is the most common and the least suspected. Check it first: it takes one command and it is often the whole answer.
Never delete log files to free space while a service is writing to them - the space is not returned until the process closes the handle. Truncate instead: : > /var/log/big.log