Knowledge

503 Service Unavailable

#Errors

A 503 means the server is temporarily unable to handle the request. With Laravel it often means maintenance mode is on; on a busy server it means PHP-FPM has no free workers.

Published by Mark van Eijk on June 23, 2026 · 1 minute read

  1. About error 503
  2. Cause 1: Laravel maintenance mode
  3. Cause 2: PHP-FPM has no free workers
  4. Solution

About error 503

A 503 Service Unavailable signals that the server is up but temporarily can't serve the request. It's meant to be transient. There are two very different situations that produce it, and the fix depends on which one you're in.

Cause 1: Laravel maintenance mode

If you (or your deploy script) ran php artisan down, Laravel returns a 503 for every request on purpose. Bring it back up with:

php artisan up

If a deploy crashed midway and left the app down, the same command fixes it. You can also allow your own IP through while it's down:

php artisan down --secret="let-me-in"

Then visit /let-me-in once to bypass the maintenance page.

Cause 2: PHP-FPM has no free workers

On a busy server, a 503 (often paired with 502) means PHP-FPM hit its process limit and nginx had nowhere to send the request. Check the PHP-FPM log for the tell-tale warning:

tail -f /var/log/php8.3-fpm.log

You'll see server reached pm.max_children setting, consider raising it.

Solution

Raise the worker pool in your pool config (/etc/php/8.3/fpm/pool.d/www.conf), sizing it to your available RAM:

pm = dynamic
pm.max_children = 20
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 8

Each PHP worker uses real memory (often 30–60 MB), so don't set max_children higher than RAM / per-worker memory. Reload after changing it:

systemctl reload php8.3-fpm

If workers are exhausted because requests are slow rather than because traffic is genuinely high, fix the slowness instead, see 504 Gateway Timeout and optimizing server performance.

Subscribe to our newsletter

Do you want to receive regular updates with fresh and exclusive content to learn more about web development, hosting, security and performance? Subscribe now!

Related articles

Error in the HTTP2 framing layer

A 503 means the server is temporarily unable to handle the request. With Laravel it often means maintenance mode is on; on a busy server it means PHP-FPM has no free workers.

Read more →

413 Request Entity Too Large in nginx

A 503 means the server is temporarily unable to handle the request. With Laravel it often means maintenance mode is on; on a busy server it means PHP-FPM has no free workers.

Read more →