
A 503 Service Unavailable error means the server is up and running but temporarily unable to handle the request. It's one of the more honest HTTP errors — the server knows it's struggling and is telling you so.
Unlike a 500 error (which means something broke unexpectedly), a 503 is often deliberate — the server is refusing new requests because it's overloaded, in maintenance, or has run out of workers to handle them.
The most common cause. When a server receives more requests than it can process simultaneously, new requests queue up. If the queue fills up too, the server starts returning 503 instead of making visitors wait indefinitely.
This often happens during:
PHP-FPM, Gunicorn, uWSGI, and similar process managers have a limit on how many requests they can handle at once. When all workers are busy, new requests get a 503.
Check PHP-FPM status:
sudo systemctl status php8.2-fpm
sudo tail -f /var/log/php8.2-fpm.log
If the log shows "max children reached", you've hit your worker limit.
Many CMS platforms (WordPress, Magento, etc.) put the site in maintenance mode during updates, returning 503 to tell search engines and visitors to come back later. If maintenance mode wasn't automatically disabled after an update, it'll keep returning 503.
WordPress: Check if a .maintenance file exists in your site root:
ls /var/www/yoursite/.maintenance
Delete it if the update has completed.
If your application (a Node.js server, a Django app, etc.) fails to start — perhaps due to a bad deployment or missing environment variable — no requests can be processed. The web server returns 503 because there's nothing to pass the request to.
Many applications return 503 if they can't reach the database, rather than returning a 500. This is good practice — it signals a temporary issue rather than an application crash.
Check your database server is running and accepting connections.
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/apache2/error.log
sudo journalctl -u your-app -f
The logs will almost always tell you the specific reason.
top # CPU and memory usage
free -h # Available RAM
df -h # Disk space
If the server is maxed out, you need to either reduce load or scale up resources.
If PHP-FPM workers are exhausted, increase pm.max_children in your pool config:
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
Be careful — more workers means more memory usage. Don't set this higher than your RAM can support.
sudo systemctl restart php8.2-fpm
sudo systemctl restart nginx
sudo systemctl restart your-app
Sometimes a clean restart is all that's needed, especially after a deployment.
For WordPress, delete the .maintenance file or deactivate any maintenance mode plugins.
One thing worth noting: a 503 is the correct response to serve during planned maintenance. Unlike a 500 error, search engines understand that a 503 is temporary and won't immediately penalise your rankings. They'll retry crawling soon.
However, extended 503s — anything lasting more than a few hours — will start to affect your search visibility. Google's crawlers give up and assume the page is gone. This is why monitoring your uptime matters even during planned maintenance windows.
A 503 that lasts 30 seconds during a traffic spike is one thing. A 503 that runs for three hours while you're asleep is a real problem.
Domain Monitor checks your site every minute and alerts you instantly if it starts returning errors — so you can respond before the problem becomes an incident. Pair that with our downtime alert setup guide to make sure the right people are notified every time.
Generative AI creates new content — text, images, code, and more. This guide explains how it works, what tools are available, and where it's genuinely useful versus overhyped.
Read moreCursor AI is an AI-powered code editor built on VS Code. Learn what it does, how it works, and whether it's the right tool for your development workflow.
Read moreClaude Opus is Anthropic's most capable AI model, built for complex reasoning and demanding tasks. Learn what it does, how it compares, and when to use it.
Read moreLooking to monitor your website and domains? Join our platform and start today.