Plesk

How to calculate pm.max_children value on a Plesk server?

Question

How to calculate pm.max_children value on a Plesk server?

Answer

  1. Connect to the server via SSH.

  2. 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-fpm

    Note: The RSS column shows non-swapped physical memory usage by PHP-FPM processes in kiloBytes.

  3. 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.

  4. To apply changes for pm.max_children value customize PHP settings as per the article.