Question
How to calculate pm.max_children value on a Plesk server?
Answer
Calculate and change the value of the parameter
pm.max_childrenbased 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_childrencan 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_childrenvalue 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.comA popular online shop. The number of visitors is very high.
example.netA home page of some person. The number of visitors is almost zero.
example.orgA little jewelry online shop that was created a month ago. The number of visitors is not high.
Is the appropriate
pm.max_childrenvalue 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_childrenvalue customize PHP settings as per the article.