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

Как узнать, работает ли apache как предварительная вилка или как рабочий?

Как узнать, запущен ли apache (или настроен для запуска) как предварительный форк или рабочий?

Ответы Series8217 и Andol неверны.

Вопрос был в том, как определить, что Apache Бег prefork или рабочий. Совет, данный другими ответами, говорит только о том, что дефолт MPM (на основе встроенных модулей), а не в том случае, если в настоящее время используется это значение по умолчанию или другой выбор.

Если httpd -V показывает prefork, это просто означает, что prefork является встроенным MPM по умолчанию. Это можно изменить, изменив параметр файла конфигурации Apache, как показано в этом процессе:

  1. Отредактируйте файл конфигурации (например, /etc/sysconfig/httpd на CentOS / RedHat)
  2. Добавьте или раскомментируйте эту строку: HTTPD=/usr/sbin/httpd.worker
  3. Перезагрузите Apache

Какой MPM действительно запущен, можно показать с помощью этого процесса:

  1. Включить Apache mod_info
  2. Запросить URL-адрес mod_info, обычно curl localhost/server-info
  3. В разделе «Настройки сервера» будет отображаться «Имя MPM: Worker».
  4. Бегать httpd -V снова - он все равно будет показывать prefork, а не worker

Нижняя граница:

  • httpd -V показывает вариант по умолчанию, а не тот, который фактически используется

На многих-многих веб-сайтах есть ответы, говорящие, что используйте httpd -V чтобы узнать, работает ли Apache prefork или worker. Все они неправы. Попробуйте описанную выше процедуру, чтобы убедиться в этом.

В Ubuntu 14.04

a2query -M

Говорит event, prefork, worker

Вы можете изменить его, добавив символические ссылки для mpm_<chosen> из mods-available к mods-enabled в /etc/apache2.

Разрешено только одно.

MPM настраивается во время компиляции. Один из способов понять это впоследствии - составить список скомпилированных модулей. Этот список будет включать выбранный MPM. Листинг может быть выполнен с использованием двоичного файла apache с флагом -l.

andreas@halleck:~$ apache2 -l
Compiled in modules:
 core.c
 mod_log_config.c
 mod_logio.c
 worker.c
 http_core.c
 mod_so.c
andreas@halleck:~$ 

Здесь мы находим модуль worker.c, следовательно, я запускаю рабочий MPM.

На Red Hat и производных просто запустите top или ps aux и посмотрите на имя процесса httpd:

  • httpd означает, что Apache работает как prefork
  • httpd.worker означает, что он работает как рабочий

В RHEL / Fedora / и т. Д. Запустите httpd -V. Вы получите результат, который включает следующее:

Server version: Apache/2.2.21 (Unix)
     ...
Architecture:   64-bit
Server MPM:     Prefork
     ...

Здесь «Server MPM» - это «Prefork», поэтому на моем сервере запущен prefork MPM.

Крис Джонсон прав. Перейти к httpd.conf => добавьте эту строку:

<Location /server-info>
SetHandler server-info
</Location>

Перезагрузите apache: /etc/init.d/httpd restart. Тогда доступ localhost / информация о сервере вашим браузером и посмотрите раздел MPM Name.

Вот еще один метод, который, как я полагаю, должен быть надежным при определении того, какой MPM используется. Добавьте следующее в свой httpd.conf:

<IfModule prefork.c>
    Header append X-MPM prefork
</IfModule>
<IfModule worker.c>
    Header append X-MPM worker
</IfModule>

Затем проверьте заголовки, используя curl -I localhost | grep X-MPM.

на centos (или rhel) вы можете запустить эту команду:

ps -ef | grep httpd

Если ты видишь /usr/sbin/httpd.worker запущен, то он использует рабочий MPM. Если ты видишь /usr/sbin/httpd работает, то он использует предварительную вилку

Ответ Криса Джонсона правильный.

После включения информационного модуля, как описано в документации Apache (http://httpd.apache.org/docs/2.2/mod/mod_info.html), этот лайнер даст вам MPM, который вы используете:

links -dump http://localhost/server-info/?server | grep "MPM Name"

Один из способов понять это в Debian, как и в дистрибутивах, - это запустить:

apachectl -V | grep -i mpm