¿Cómo puedo saber si Apache se está ejecutando (o configurado para ejecutarse) como prefork o trabajador?
¿Cómo puedo saber si Apache se está ejecutando (o configurado para ejecutarse) como prefork o trabajador?
Respuestas:
El MPM se configura en tiempo de compilación. Una forma de resolverlo después es hacer una lista compilada en módulos. Esa lista incluirá el MPM elegido. El listado se puede lograr ejecutando el binario apache, con el indicador -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:~$
Aquí encontramos el módulo worker.c, por lo tanto, estoy ejecutando el MPM de trabajo.
apache2ctl -Mpara enumerar los módulos activos.
Las respuestas dadas por Series8217 y Andol son incorrectas.
La pregunta era cómo saber si Apache ejecuta prefork o trabajador. El consejo dado por las otras respuestas solo dice cuál es el MPM predeterminado (basado en módulos compilados), no si ese valor predeterminado u otra opción se está utilizando en este momento.
Si httpd -Vmuestra prefork, eso solo significa que prefork es el MPM predeterminado compilado. Eso se puede anular cambiando la configuración del archivo de configuración de Apache, como se muestra en este proceso:
/etc/sysconfig/httpdEn CentOS / RedHat)HTTPD=/usr/sbin/httpd.workerEl MPM que se está ejecutando realmente se puede mostrar usando este proceso:
curl localhost/server-infohttpd -Vnuevo: seguirá mostrando prefork, no trabajadorLínea de fondo:
httpd -V muestra la opción predeterminada, no qué opción está realmente en usoHay respuestas en muchos, muchos sitios web que dicen, httpd -Vúselo para saber si Apache está ejecutando prefork o trabajador. Todos están equivocados. Pruebe el procedimiento anterior para verlo usted mismo.
En Ubuntu 14.04
a2query -M
Dice event, prefork,worker
Puede cambiarlo agregando enlaces simbólicos de mpm_<chosen>from mods-availablea mods-enabledin /etc/apache2.
Solo se permite uno a la vez.
eventMPM es, según el sitio de Apache, "una variante del MPM trabajador con el objetivo de consumir hilos solo para conexiones con procesamiento activo".
En RedHat y derivados, simplemente inicie topo ps auxy mire el nombre del proceso httpd:
httpd significa que Apache se está ejecutando como preforkhttpd.worker significa que se está ejecutando como trabajadorEn RHEL / Fedora / etc, ejecute httpd -V. Obtendrá algunos resultados que incluyen lo siguiente:
Server version: Apache/2.2.21 (Unix)
...
Architecture: 64-bit
Server MPM: Prefork
...
Aquí 'Server MPM' es 'Prefork', por lo que mi servidor está ejecutando el prefork MPM.
Chris Johnson tiene razón. Vaya a httpd.conf => agregue esta línea:
<Location /server-info>
SetHandler server-info
</Location>
Reinicie apache: /etc/init.d/httpd restart. Luego acceda a localhost / server-info desde su navegador y mire la sección Nombre de MPM .
Aquí hay otro método que espero que sea confiable para determinar qué MPM está en uso. Agregue lo siguiente a su httpd.conf:
<IfModule prefork.c>
Header append X-MPM prefork
</IfModule>
<IfModule worker.c>
Header append X-MPM worker
</IfModule>
Luego verifique los encabezados usando curl -I localhost | grep X-MPM.
en centos (o rhel) puede ejecutar este comando:
ps -ef | grep httpd
si ve /usr/sbin/httpd.workerque se está ejecutando, está utilizando el MPM de trabajo si ves /usr/sbin/httpdcorrer, entonces está usando prefork
La respuesta de Chris Johnson es correcta.
Después de habilitar el módulo de información, como se documenta en la Documentación de Apache ( http://httpd.apache.org/docs/2.2/mod/mod_info.html ), este revestimiento le dará el MPM que está utilizando:
links -dump http://localhost/server-info/?server | grep "MPM Name"