Як я можу дізнатися, чи працює apache (або налаштований для запуску) як префорк або робочий?
Як я можу дізнатися, чи працює apache (або налаштований для запуску) як префорк або робочий?
Відповіді:
MPM налаштовується під час компіляції. Один із способів з’ясувати це згодом - це перелік складених у модулях. Цей список буде включати обраний MPM. Лістинг можна здійснити за допомогою бінарного апаша з прапором -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 префорк або робочий. Поради, надані іншими відповідями, лише вказують на те, що таке MPM за замовчуванням (на основі складених модулів), але не в тому випадку, якщо цей стандарт або інший вибір використовується в даний час.
Якщо httpd -V
відображається prefork, це означає, що prefork - це зібраний MPM за замовчуванням. Це можна змінити, змінивши налаштування файлу конфігурації Apache, як показано в цьому процесі:
/etc/sysconfig/httpd
на CentOS / RedHat)HTTPD=/usr/sbin/httpd.worker
Який MPM працює, можна показати за допомогою цього процесу:
curl localhost/server-info
httpd -V
знову - все одно буде показаний префорк, а не робочийНижня лінія:
httpd -V
показує параметр за замовчуванням, а не той, який фактично використовуєтьсяНа багатьох, багатьох веб-сайтах є відповіді, які говорять, використовуйте, httpd -V
щоб сказати, чи Apache працює префорком або робочим. Вони всі помиляються. Спробуйте описану вище процедуру, щоб переконатися в цьому.
В Ubuntu 14.04
a2query -M
Повідомляє event
, prefork
,worker
Ви можете змінити його, додавши , символічні посилання на mpm_<chosen>
від mods-available
до mods-enabled
в /etc/apache2
.
За раз дозволено лише одне.
event
MPM, згідно з сайтом Апача «варіант працівника MPM з метою споживаючи теми тільки для з'єднань з активною обробкою».
У RedHat та похідних просто запустіть top
або ps aux
подивіться назву процесу httpd:
httpd
означає, що Apache працює як префоркhttpd.worker
означає, що він працює як працівникНа RHEL / Fedora / тощо запустіть httpd -V
. Ви отримаєте деякий вихід, який включає в себе наступне:
Server version: Apache/2.2.21 (Unix)
...
Architecture: 64-bit
Server MPM: Prefork
...
Тут "Сервер MPM" - "Prefork", тому на моєму сервері працює префорк MPM.
Кріс Джонсон прав. Перейдіть на httpd.conf => додайте цей рядок:
<Location /server-info>
SetHandler server-info
</Location>
Перезапустити apache: /etc/init.d/httpd перезапустити. Потім перейдіть до інформації про localhost / сервер у своєму браузері та перегляньте розділ Ім'я MPM .
Ось ще один метод, який, на мою думку, повинен бути надійним у визначенні того, який 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"