Как мне узнать, работает ли Apache (или настроен ли он на запуск) как prefork или рабочий?
Как мне узнать, работает ли Apache (или настроен ли он на запуск) как prefork или рабочий?
Ответы:
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.
apache2ctl -Mсписок активных модулей.
Ответы, данные Series8217 и Andol, неверны.
Вопрос был в том, как определить, работает ли Apache на prefork или на рабочем месте. Советы, приведенные в других ответах, говорят только о том, что представляет собой MPM по умолчанию (на основе скомпилированных модулей), но не в том случае, если этот вариант по умолчанию или другой выбор используется в настоящее время.
Если httpd -Vпоказывает prefork, это просто означает, что prefork - это скомпилированный MPM по умолчанию. Это можно изменить, изменив настройку файла конфигурации Apache, как показано в этом процессе:
/etc/sysconfig/httpdв CentOS / RedHat)HTTPD=/usr/sbin/httpd.workerКакой MPM на самом деле работает, можно показать с помощью этого процесса:
curl localhost/server-infohttpd -Vснова - он покажет префорк, а не рабочийНижняя граница:
httpd -V показывает параметр по умолчанию, а не тот, который на самом деле используетсяНа многих сайтах есть ответы, в которых говорится, httpd -Vчто Apache использует prefork или рабочий. Они все не правы. Попробуйте описанную выше процедуру, чтобы убедиться в этом.
В Ubuntu 14.04
a2query -M
Сообщает event, prefork,worker
Вы можете изменить его, добавив , символические ссылки на mpm_<chosen>от mods-availableдо mods-enabledв /etc/apache2.
Только один разрешен за один раз.
eventсайту Apache, MPM является «вариантом рабочего MPM с целью использования потоков только для соединений с активной обработкой».
На RedHat и производных, просто запустите topили ps auxи посмотрите на имя процесса httpd:
httpd означает, что Apache работает как preforkhttpd.worker означает, что он работает как рабочийНа RHEL / Fedora / etc запустите 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 / server-info через ваш браузер и посмотрите раздел 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бег, то он использует prefork
Ответ Криса Джонсона правильный.
После включения информационного модуля, как описано в документации Apache ( http://httpd.apache.org/docs/2.2/mod/mod_info.html ), этот вкладыш даст вам MPM, который вы используете:
links -dump http://localhost/server-info/?server | grep "MPM Name"