Question
How to calculate pm.max_children
value on a Plesk server?
Answer
-
Calculate and change the value of the parameter
pm.max_children
based on the amount of RAM on the system.
The following command will help to determine the memory used by each (PHP-FPM) child process:# ps -ylC php-fpm --sort:rss
S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMD
S 0 931 1 0 80 0 87040 99039 ep_pol ? 00:00:00 php-fpmNote: The RSS column shows non-swapped physical memory usage by PHP-FPM processes in kiloBytes.
-
If on average each PHP-FPM process takes ~85MB of RAM on the server, the appropriate value for
pm.max_children
can be calculated as follows:pm.max_children = Total RAM dedicated to the web server / Max child process size
For example, if the server has 8GB of RAM and 6GB of RAM is planned to be allocated to the web server, then the
pm.max_children
value will be the following:pm.max_children = 6144MB / 85MB = 72
Note: The received number of children has to be distributed among all websites on the server. Keep in mind that most popular websites require more children while others, non-popular ones - less.
Example of how to divide the result between websites
There are 3 domains on the server:
-
example.com
A popular online shop. The number of visitors is very high.
-
example.net
A home page of some person. The number of visitors is almost zero.
-
example.org
A little jewelry online shop that was created a month ago. The number of visitors is not high.
Is the appropriate
pm.max_children
value was calculated to be 72, in this case, it is required to allocate children, for example, as follows:-
For
example.com
:50 children.
-
For
example.net
:2 children.
-
For
example.org
:20 children.
-
-
To apply changes for
pm.max_children
value customize PHP settings as per the article.