¿Cómo puedo saber si Apache se está ejecutando (o configurado para ejecutarse) como prefork o trabajador?
40
¿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.
Aquí encontramos el módulo worker.c, por lo tanto, estoy ejecutando el MPM de trabajo.
fuente
apache2ctl -M
para 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 -V
muestra 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/httpd
En CentOS / RedHat)HTTPD=/usr/sbin/httpd.worker
El MPM que se está ejecutando realmente se puede mostrar usando este proceso:
curl localhost/server-info
httpd -V
nuevo: 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.fuente
En Ubuntu 14.04
Dice
event
,prefork
,worker
Puede cambiarlo agregando enlaces simbólicos de
mpm_<chosen>
frommods-available
amods-enabled
in/etc/apache2
.Solo se permite uno a la vez.
fuente
event
MPM 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
top
ops aux
y mire el nombre del proceso httpd:httpd
significa que Apache se está ejecutando como preforkhttpd.worker
significa que se está ejecutando como trabajadorfuente
En RHEL / Fedora / etc, ejecute
httpd -V
. Obtendrá algunos resultados que incluyen lo siguiente:Aquí 'Server MPM' es 'Prefork', por lo que mi servidor está ejecutando el prefork MPM.
fuente
Chris Johnson tiene razón. Vaya a httpd.conf => agregue esta línea:
Reinicie apache: /etc/init.d/httpd restart. Luego acceda a localhost / server-info desde su navegador y mire la sección Nombre de MPM .
fuente
Aquí hay otro método que espero que sea confiable para determinar qué MPM está en uso. Agregue lo siguiente a su
httpd.conf
:Luego verifique los encabezados usando
curl -I localhost | grep X-MPM
.fuente
en centos (o rhel) puede ejecutar este comando:
si ve
/usr/sbin/httpd.worker
que se está ejecutando, está utilizando el MPM de trabajo si ves/usr/sbin/httpd
correr, entonces está usando preforkfuente
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:
fuente
Una forma de resolverlo en Debian como distribuciones es ejecutando:
fuente