Связь между настройками PHP-FPM и mpm_worker (Apache)

Связь между настройками PHP-FPM и mpm_worker (Apache)

У меня есть сайт, работающий на Magento со следующей настройкой:

  • Apache 2.4 с mpm_worker
  • PHP-FPM
  • Общий объем оперативной памяти на сервере: 14 ГБ (10 ГБ доступно для Apache/PHP)

Каждый процесс PHP-FPM потребляет около 80 МБ оперативной памяти.

Я хочу настроить параметры PHP-FPM и mpm_worker. Читая документацию, я немного запутался в отношении связи между опциями в PHP-FPM и mpm_worker.

Например, PHP-FPM имеет конфигурации: pm.min_spare_servers, pm.max_spare_servers, pm.start_serversи max_children. Я понимаю, что эти параметры означают применительно к PHP-FPM.

Однако mpm_worker имеет следующие конфигурации: MinSpareThreads, MaxSpareThreads, StartServersи ThreadLimit. Опять же, изолированно от mpm_worker я понимаю, что они делают.

Мой вопрос: как эти конфигурации связаны друг с другом? Допустим, я установил StartServers=2и ThreadsPerChild=25. Это дало бы мне 50 потоков для начала относительно Apache/mpm_worker. Если я затем установлю pm.start_servers = 50, PHP-FPM изначально создаст 50 процессов.

Так какова связь между этими 50 потоками "Apache" и 50 процессами "PHP-FPM"? Использует ли каждый поток Apache один процесс PHP-FPM?

Надеюсь, кто-нибудь сможет прояснить этот вопрос.

Спасибо!

решение1

Apache обслуживает запросы клиентов, используя дочерние потоки, но он будет вызывать PHP-FPM только для файлов php — изображения, css и js должны обслуживаться непосредственно из Apache и, таким образом, не использовать поток PHP-FPM.

PHP-FPM имеет несколько потоков без дочерних потоков — каждый поток обслуживает запрос от Apache.

Насколько мне известно, несколько запросов от одного и того же клиента (загрузка страницы, а также изображений, css и js) должны потреблять несколько потоков, если в Apache не настроен KeepAlive.Посмотреть эту ссылкудля получения дополнительной информации о KeepAlive.

Недавно я сам настраивал сервер Apache и обнаружил, что если у вас несколько ядер, то лучше увеличить количество дочерних процессов на поток.

решение2

Связь динамически отображается. Это отдельные процессы, которые также могут быть запущены на отдельных серверах, поэтому у вас есть множество вариантов конфигурации.

Процессы/потоки Apache обрабатывают начальные соединения, которые затем используют процессы php-fpm для анализа PHP-файлов для возврата запросов.

Здесь есть много переменных, которые помогут вам определить, как настроить, но в целом настройте apache так, чтобы у него было достаточно потоков для обработки запросов в реальном времени, и настройте php-fpm так, чтобы у ваших PHP-скриптов/wensites было достаточно памяти для запуска. С различными возможными вариантами кэширования это можно решить только путем бенчмаркинга работающей системы.

Связанный контент