503 Service Unavailable

WordPress 503 Error: Fix When Server Is Alive but Site Is Down

Your WordPress site shows 503 error but server isn't actually down. Almost always a PHP process or plugin timeout. Here's the real fix.

You're getting a 503 Service Unavailable on your WordPress site. Server's alive—you can SSH in, ping works, maybe even phpMyAdmin loads. But the site itself? Dead. Usually happens after you updated a plugin, installed something new, or your site got a sudden traffic spike. Had a client last month whose e-commerce site dropped to 503 right after a WooCommerce update. Took me 20 minutes to trace it to a PHP process that hung because of a memory limit hit.

What Actually Causes a 503 Error on WordPress

A 503 isn't a crash. It's your web server saying "I'm overloaded or broken, try later." In WordPress, that usually means PHP-FPM or Apache hit its process limit, or a plugin threw a fatal error that killed the PHP worker. The server is fine—the application layer broke.

Three most common triggers:

  • Plugin conflict — a plugin that's poorly coded or incompatible with your PHP version (7.4 vs 8.0, for example).
  • PHP process exhaustion — happens when too many requests come in and PHP-FPM runs out of child processes. Common on cheap shared hosting.
  • Maintenance mode stuck — the .maintenance file gets left behind after an update.

Step-by-Step Fix (Do These in Order)

Step 1: Kill the Stuck Maintenance Mode

First check if WordPress thinks it's still updating. SSH into your server (or use cPanel file manager) and look for a file called .maintenance in the WordPress root directory. If it's there, delete it:

cd /var/www/html
rm -f .maintenance

Then reload the site. If it works, you're done. If not, move on.

Step 2: Check PHP-FPM Status

If you have root access, run this to see if PHP-FPM is actually running:

systemctl status php8.1-fpm

Replace 8.1 with your PHP version. If it shows "active (running)", check the process pool:

ps aux | grep php-fpm | wc -l

That number should be under 30 or so. If it's 100+, your PHP processes are hanging. Restart PHP-FPM:

systemctl restart php8.1-fpm

Then reload the site. If it works but breaks again within a minute, you've got a plugin eating processes.

Step 3: Temporarily Disable All Plugins (Without WP Admin)

You can't get into wp-admin because of the 503. So do it the old-school way. Rename the plugins folder:

cd /var/www/html
mv wp-content/plugins wp-content/plugins_off

Create a new empty plugins folder:

mkdir wp-content/plugins

Now reload the site. If it comes back, a plugin caused it. Rename the folder back and reactivate plugins one by one to find the culprit:

mv wp-content/plugins_off wp-content/plugins

Then manually enable each plugin via wp-admin.

Step 4: Increase PHP Memory Limit

Low memory can also trigger 503s on larger sites. Edit your wp-config.php file and add this line just before the /* That's all, stop editing! */ comment:

define('WP_MEMORY_LIMIT', '256M');

This won't fix a broken plugin, but it'll prevent future memory-related 503s.

Step 5: Check Apache/Nginx Error Logs

You need to see exactly what's failing. Look in:

  • Apache: /var/log/apache2/error.log
  • Nginx: /var/log/nginx/error.log
  • PHP: /var/log/php8.1-fpm.log

Run this to see the last 20 lines:

tail -20 /var/log/apache2/error.log

You'll often see something like PHP Fatal error: Allowed memory size exhausted or PHP Fatal error: Uncaught Error: Call to undefined function. That's your smoking gun.

If It Still Fails

If none of this worked, you're dealing with one of these:

  • Server resource exhaustion — check free -m for RAM usage. If it's pegged at 100%, you need to upgrade your hosting plan.
  • A corrupted .htaccess file — rename it to .htaccess_old and see if that helps. WordPress will recreate it when you save permalinks.
  • A reverse proxy issue — if you're behind Cloudflare or Varnish, try accessing the server's IP directly to bypass the proxy.
  • Your web server is crashed — run systemctl restart apache2 or systemctl restart nginx. Sometimes it just needs a kick.

One last thing: if you're on shared hosting and you've done all this, it's probably your host hitting PHP process limits. Call them and ask them to increase pm.max_children in PHP-FPM. Most won't do it for shared plans, but it's worth asking.

I've fixed dozens of 503 errors on WordPress sites. 90% of the time it's a plugin gone rogue or a PHP-FPM pool that choked. Start with the plugins folder rename—it's the fastest test.
Related Errors in Server & Cloud
0x80070005 Windows Server 0x80070005 Access Denied Fix 0X000005AC Fix 0X000005AC: Paged Pool Memory Exhausted on Server 0X000006B0 Fix RPC_S_TYPE_ALREADY_REGISTERED 0X000006B0 in 5 Steps Why Your Site Is Slow on Mobile (and How to Fix It)

Was this solution helpful?

EP
Erropedia Team
Tech Support Editors
The Erropedia editorial team researches and documents real-world tech errors from across Windows, Linux, macOS, networking, databases, cloud platforms, and more. Every solution is reviewed for accuracy and updated as software and systems evolve.