Назад | Перейти на главную страницу

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

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

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

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

По сути, количество процессов, которые 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.

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

  • Как долго ваш средний запрос?
  • Какое максимальное количество одновременных посетителей получают сайт (ы)?
  • Сколько памяти в среднем потребляет каждый дочерний процесс?