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
0X00000A35 RPLFILES (0x00000A35) share missing — stop the service first, then recreate it 0X8001010B Fix 0x8001010B: RPC_E_SERVERCALL_REJECTED Explained Fix VM High CPU Contention in 3 Steps Container Pod Won't Schedule: Quick Fix to Deep Debug

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.