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

Что происходит, когда одновременно используются mpm_prefork_module и mpm_worker_module?

Я наткнулся на эту конфигурацию Apache:

<IfModule mpm_prefork_module>
    StartServers          16
    MinSpareServers       16
    MaxSpareServers       32
    ServerLimit           400
    MaxClients            400
    MaxRequestsPerChild   10000
</IfModule>

<IfModule mpm_worker_module>
    StartServers          4
    MaxClients            1024
    MinSpareThreads       64
    MaxSpareThreads       192
    ThreadsPerChild       64
    MaxRequestsPerChild   0
</IfModule>

В настоящее время установлен только модуль mpm_prefork_module. Но что произойдет, если на сервере установлен модуль mpm_worker_module? Меня эта конфигурация беспокоит.

Этот вопрос похоже, но ответ говорит только о том, как найти текущий используемый MPM, а не о стандартном поведении или о том, что поведение не определено.

Невозможно использовать оба: одновременно может использоваться только один из MPM.

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

По умолчанию, когда вы устанавливаете их из двоичного кода (rpm, deb, ... или через yum, apt-get, ...), всегда используется prefork. Если вы хотите работать с воркером, вам понадобится сборка из исходников. Но worker лучше всего работает, если вы запустите fcgi php.