Question: Websites on PHP-FPM are unavailable or loading slowly: server reached max_children setting (*), consider raising it
Applicable to: Symptoms- Websites that have PHP handler set as FPM application served by Apache or FPM application served by nginx at Domains > example.com > PHP Settings experience one of the following issues:
- load slowly
- not accessible (permanently or periodically) with a 50x error in a web-browser:
502 Bad Gateway
503 Service Temporarily Unavailable
504 Gateway Time-out
- The following message appears in the PHP-FPM error logfile /var/log/plesk-phpXX-fpm/error.log (where XX is a PHP version used by the websites):
WARNING: [pool example.com] server reached max_children setting (*), consider raising it
The message above is usually accompanied with this error:
unable to read what child say: Bad file descriptor (9)
- If nginx is enabled on the server, one of the following error messages may appear in domain's error logfile /var/www/vhosts/system/example.com/logs/proxy_error_log:
[error] 11456#0: *118348 connect() to unix:///var/www/vhosts/system/example.com/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 203.0.113.2, server: example.com, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:///var/www/vhosts/system/example.com/php-fpm.sock:", host: "example.com"
[error] 20058#0: *4725139 upstream prematurely closed connection while reading response header from upstream, client: 203.0.113.2, server: example.com, request: "POST /path/to/some/file HTTP/2.0", upstream:
CauseThe PHP-FPM pm.max_children limit has been reached by the website(s).
ResolutionIncrease the pm.max_children limit for the affected domains:
1.Connect to the Plesk server via SSH
2.Find affected domains using the command below:
Note: The number on the left indicates how many times the pm.max_children limit has been reached by the website.
If a domain is using a dedicated FPM application and has a custom vhosts location, change the path /var/www/vhosts/system/ in the command below:
# grep -r "server reached max_children setting" /var/log/*php*-fpm/error.log | cut -d' ' -f5 | tr -d ']' | sort | uniq -c | sort -nr
100 example.com
50 example.net
25 example.org
<...>
3.Log into Plesk
4.Go to
Domains > example.com > PHP Settings > PHP-FPM Settings.
5.Increase the pm.max_children value for the domain and apply the changes. Increase this value for all domains listed in step 2.
Note: In this example, we are setting pm.max_children to 20. To fine tune this setting, visit this KB article.
(https://pix.cobrasoft.org/images/2025/09/26/mceclip0-5.png)
Other options to increase the pm.max_children limit:
Increasing pm.max_children for all domains under a service plan via Plesk
1.Log in to Plesk.
2.Go to
Service Plans > plan_name > PHP Settings tab > PHP-FPM Settings section.3.Increase the pm.max_children value and click
Update & Sync.(https://pix.cobrasoft.org/images/2025/09/26/mceclip0-5.png)
Note: The changes will not be applied to subscriptions if:
- A subscription is not synced with this service plan (Marked with a blue lock in the Subscriptions menu).
- If the permission Hosting performance settings management is granted in service plan settings at Service Plans > plan_name > Permissions tab.
Increasing pm.max_children for one domain via a command-line interface
1.Create a php.ini file in domain's system directory /var/www/vhosts/system/example.com/conf/:
# touch /var/www/vhosts/system/example.com/conf/php.ini
2.Open the php.ini file in any text editor (for example, vi editor) and add the following records:
[php-fpm-pool-settings]
pm.max_children = 20
3.Save the changes and close the file.
4.Run the following command to apply the changes:
# /usr/local/psa/bin/php_settings -u