Applicable to:
- Plesk for Linux
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:
PLESK_INFO: 502 Bad Gateway
PLESK_INFO: 503 Service Temporarily Unavailable
PLESK_INFO: 504 Gateway Time-out
Cloudflare 522 timeout error
-
-
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):CONFIG_TEXT: WARNING: [pool example.com] server reached max_children setting (*), consider raising it
-
The message above is usually accompanied with this error:
CONFIG_TEXT: 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
:CONFIG_TEXT: [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"
CONFIG_TEXT: [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:
Cause
The PHP-FPM pm.max_children
has been reached by the website(s).
Resolution
Increase the pm.max_children
limit for the affected domains:
-
Connect to the Plesk server via SSH.
-
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
<...> -
Go to Domains > example.com > PHP Settings > PHP-FPM Settings.
-
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.
Other options to increase the pm.max_children
limit:
-
Go to Service Plans > plan_name > PHP Settings tab > PHP-FPM Settings section.
-
Increase the
pm.max_children
value and click Update & Sync.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.
-
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
-
Open the
php.ini
file in any text editor (for example, vi editor) and add the following records:CONFIG_TEXT: [php-fpm-pool-settings]
pm.max_children = 20 -
Save the changes and close the file.
-
Run the following command to apply the changes:
# /usr/local/psa/bin/php_settings -u
Comments
0 comments
Please sign in to leave a comment.