php-fpm: помогает понять start_servers, min_spare_servers, max_spare_servers

10

Я пытаюсь настроить мою установку PHP-FPM для моего сервера, и у меня есть проблемы , выяснить , что делать с pm.start_servers, pm.min_spare_serversи pm.max_spare_serversпеременными. я используюpm = dynamic

pm.max_childrenсовершенно ясно. Каждый дочерний процесс обслуживает 1 веб-клиента одновременно. Хорошо. Что такое «сервер», тогда? Понятно, что в зависимости от конфигурации по умолчанию 1 сервер может обслуживать более 1 дочернего элемента. Каков верхний предел? Что я должен использовать в качестве практического правила для # детей / сервера? Или это вообще связано? На каком-то форуме кто-то утверждал, что число серверов должно составлять 2 x числа ядер процессора, но я видел рекомендованные конфигурации, где их число было намного выше, 40-50.

Ни документация по PHP, ни множество статей по настройке php-fpm не были полезны.

Bintz
источник

Ответы:

13

В основном, количество процессов, которые php-fpm будет запускать в любое время, очень настраивается, когда вы устанавливаете так, dynamicкак вы делаете. При установке на staticбудет ВСЕГДА быть , что многие дочерние процессы , запущенные. Обычно вы устанавливаете динамический режим для экономии ресурсов. Каждый дочерний процесс может обрабатывать один запрос. Верхний предел зависит от того, насколько тяжелым является ваше php-приложение и сколько трафика вы получаете. Вы также должны рассчитать среднее потребление памяти каждым ребенком и убедиться, что вы НИКОГДА не позволите количеству дочерних элементов превысить количество оперативной памяти, установленной на вашем сервере, иначе вы начнете менять местами или даже запускать процессы уничтожения ядра.

; Choose how the process manager will control the number of child processes.
; Possible Values:
;   static  - a fixed number (pm.max_children) of child processes;
;   dynamic - the number of child processes are set dynamically based on the
;             following directives:
;             pm.max_children      - the maximum number of children that can
;                                    be alive at the same time.
;             pm.start_servers     - the number of children created on startup.
;             pm.min_spare_servers - the minimum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is less than this
;                                    number then some children will be created.
;             pm.max_spare_servers - the maximum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is greater than this
;                                    number then some children will be killed.
; Note: This value is mandatory.

При настройке этих параметров учитывайте следующее:

  • Как долго длится ваш средний запрос?
  • Какое максимальное количество одновременных посетителей получают сайт (ы)?
  • Сколько памяти в среднем потребляет каждый дочерний процесс?
gbolo
источник
3
Очень полезно, спасибо за понимание. Также полезно для расчета использовать это, ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'чтобы увидеть, сколько памяти имеет каждый работник. взято из community.webcore.cloud/tutorials/…
Мэтт Ниндзя