Як я можу дізнатися, чи працює 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-infohttpd -Vзнову - все одно буде показаний префорк, а не робочийНижня лінія:
httpd -V показує параметр за замовчуванням, а не той, який фактично використовуєтьсяНа багатьох, багатьох веб-сайтах є відповіді, які говорять, використовуйте, httpd -Vщоб сказати, чи Apache працює префорком або робочим. Вони всі помиляються. Спробуйте описану вище процедуру, щоб переконатися в цьому.
В Ubuntu 14.04
a2query -M
Повідомляє event, prefork,worker
Ви можете змінити його, додавши , символічні посилання на mpm_<chosen>від mods-availableдо mods-enabledв /etc/apache2.
За раз дозволено лише одне.
eventMPM, згідно з сайтом Апача «варіант працівника 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"