503 Service Unavailable - Rocketeers app

  [ Rocketeers ](/)   

[Login](https://rocketeersapp.com/login) 

 On this page

 Knowledge
---------

503 Service Unavailable
=======================

### [\#Errors](https://rocketeersapp.com/knowledge/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](https://rocketeersapp.com/author/mark-van-eijk) on June 23, 2026 · 1 minute read

1. [About error 503](#content-about-error-503)
2. [Cause 1: Laravel maintenance mode](#content-cause-1-laravel-maintenance-mode)
3. [Cause 2: PHP-FPM has no free workers](#content-cause-2-php-fpm-has-no-free-workers)
4. [Solution](#content-solution)

[\#](#content-about-error-503 "Permalink")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.

[\#](#content-cause-1-laravel-maintenance-mode "Permalink")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.

[\#](#content-cause-2-php-fpm-has-no-free-workers "Permalink")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`.

### [\#](#content-solution "Permalink")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](/504-gateway-timeout-nginx) and [optimizing server performance](/optimize-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!

  Fill in your email address to receive updates  Subscribe 

#### More in [\#Errors](https://rocketeersapp.com/knowledge/errors)

- [Error in the HTTP2 framing layer](https://rocketeersapp.com/knowledge/error-in-the-http2-framing-layer)
- [413 Request Entity Too Large in nginx](https://rocketeersapp.com/knowledge/413-request-entity-too-large)
- [403 Forbidden in nginx](https://rocketeersapp.com/knowledge/403-forbidden-nginx)
- [ERR\_TOO\_MANY\_REDIRECTS (redirect loop)](https://rocketeersapp.com/knowledge/err-too-many-redirects)
- [CORS error: No Access-Control-Allow-Origin header](https://rocketeersapp.com/knowledge/cors-error-no-access-control-allow-origin)
- [curl (60) SSL certificate problem: unable to get local issuer certificate](https://rocketeersapp.com/knowledge/curl-60-ssl-certificate-problem-unable-to-get-local-issuer-certificate)

 [View all 11 articles →](https://rocketeersapp.com/knowledge/errors)
