Jak sprawdzić, czy apache działa (lub jest skonfigurowany do uruchamiania) jako prefork czy pracownik?
Jak sprawdzić, czy apache działa (lub jest skonfigurowany do uruchamiania) jako prefork czy pracownik?
Odpowiedzi:
MPM jest konfigurowany podczas kompilacji. Jednym ze sposobów, aby to później ustalić, jest lista skompilowana w modułach. Ta lista będzie zawierać wybrany MPM. Listowanie można osiągnąć, uruchamiając plik binarny apache za pomocą opcji -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:~$
Tutaj znajduje się moduł robotnik.c, dlatego uruchamiam robota MPM.
apache2ctl -M
listy aktywnych modułów.
Odpowiedzi udzielone przez Series8217 i Andola są niepoprawne.
Pytanie brzmiało: jak stwierdzić, czy Apache korzysta z preforków, czy z procesów roboczych. Porada udzielona przez inne odpowiedzi mówi tylko, czym jest domyślny MPM (w oparciu o skompilowane moduły), a nie, jeśli obecnie używany jest ten domyślny lub inny wybór.
Jeśli httpd -V
pokazuje prefork, oznacza to po prostu, że prefork jest skompilowanym domyślnym MPM. Można to zmienić, zmieniając ustawienie pliku konfiguracyjnego Apache, jak pokazano w tym procesie:
/etc/sysconfig/httpd
CentOS / RedHat)HTTPD=/usr/sbin/httpd.worker
Który MPM faktycznie działa, można pokazać za pomocą tego procesu:
curl localhost/server-info
httpd -V
ponownie - nadal będzie wyświetlać preforkę, a nie pracownikaDolna linia:
httpd -V
pokazuje domyślną opcję, a nie która opcja jest aktualnie używanaOdpowiedzi na wiele, wiele stron internetowych mówią, użyj, httpd -V
aby powiedzieć, czy Apache działa przed przygotowaniem czy robotem. Wszyscy się mylą. Wypróbuj powyższą procedurę, aby się przekonać.
W Ubuntu 14.04
a2query -M
Informuje event
, prefork
,worker
Możesz to zmienić, dodając dowiązania symboliczne mpm_<chosen>
od mods-available
do do mods-enabled
w /etc/apache2
.
Tylko jeden jest dozwolony na raz.
event
MPM jest według miejsca Apache „wariantu MPM pracownika z celem spożywania wątki tylko dla połączeń z aktywnego przetwarzania”.
W RedHat i pochodnych po prostu uruchom top
lub ps aux
spójrz na nazwę procesu httpd:
httpd
oznacza, że Apache działa jako preforkhttpd.worker
oznacza, że działa jako pracownikNa RHEL / Fedora / etc uruchom httpd -V
. Otrzymasz dane wyjściowe, które obejmują:
Server version: Apache/2.2.21 (Unix)
...
Architecture: 64-bit
Server MPM: Prefork
...
Tutaj „Server MPM” to „Prefork”, więc mój serwer uruchamia prefork MPM.
Chris Johnson ma rację. Przejdź do httpd.conf => dodaj ten wiersz:
<Location /server-info>
SetHandler server-info
</Location>
Uruchom ponownie apache: /etc/init.d/httpd restart. Następnie przejdź do informacji o hoście lokalnym / serwerze przez przeglądarkę i spójrz na sekcję Nazwa MPM .
Oto inna metoda, która, jak się spodziewam, powinna być niezawodna w określaniu, który MPM jest w użyciu. Dodaj następujące elementy do httpd.conf
:
<IfModule prefork.c>
Header append X-MPM prefork
</IfModule>
<IfModule worker.c>
Header append X-MPM worker
</IfModule>
Następnie sprawdź nagłówki za pomocą curl -I localhost | grep X-MPM
.
na centos (lub rhel) możesz uruchomić to polecenie:
ps -ef | grep httpd
jeśli widzisz /usr/sbin/httpd.worker
uruchomione, oznacza to, że używa MPM procesu roboczego. jeśli widzisz /usr/sbin/httpd
uruchomiony, oznacza to, że używa prefork
Odpowiedź Chrisa Johnsona jest słuszna.
Po włączeniu modułu informacyjnego, zgodnie z dokumentacją Apache Documentation ( http://httpd.apache.org/docs/2.2/mod/mod_info.html ), ta jedna linijka da Ci MPM, którego używasz:
links -dump http://localhost/server-info/?server | grep "MPM Name"