Article ID: 113007, created on May 8, 2013, last review on May 11, 2014

  • Applies to:
  • Plesk 12.0 for Linux

Resolución

Prefork:
 
El MPM prefork utiliza múltiples procesos secundarios con un hilo para cada uno de ellos. Cada proceso gestiona una conexión a la vez. En muchos sistemas, prefork puede compararse con worker en términos de velocidad, aunque este usa una mayor cantidad de memoria. En algunos casos, el diseño sin hilos de Prefork presenta varias ventajas en comparación con worker. Por ejemplo, este MPM puede usarse con módulos de terceros sin protección de hilos y es mucho más fácil de depurar en plataformas donde el soporte de depuración de hilos sea insuficiente.
 
    * Desarrollado en Apache 1
    * Múltiples procesos secundarios, 1 hilo para cada proceso secundario, los procesos secundarios gestionan las peticiones
    * Mejor aislamiento y estabilidad
    * Probado para funcionar correctamente junto con Parallels Plesk Panel
   
Inconvenientes:

* Consumo de memoria más elevado y menor rendimiento en comparación con los MPMs con múltiples hilos
 
Worker:
 
El MPM worker utiliza múltiples procesos secundarios, cada uno de ellos con múltiples hilos. Cada hilo gestiona una conexión a la vez. Worker suele ser una buena opción en el caso de servidores con tráfico elevado, ya que consume una cantidad inferior de memoria que el MPM prefork.
 
    * Desarrollado en Apache 2 además del módulo prefork
    * Múltiples procesos, muchos hilos por proceso, los hilos gestionan las peticiones
    * Utiliza una cantidad inferior de memoria y proporciona un mejor rendimiento
   
Inconvenientes:

* En comparación con un MPM basado en procesos, no proporciona el mismo nivel de aislamiento para cada una de las peticiones
* Si se suspende un único hilo, se terminará todo el proceso, lo que afectará a todos los hilos
* Requiere un procesador de protección de hilos para la gestión de contenido dinámico
* No es soportado por Parallels Plesk Panel
 
Cada uno de los módulos presenta un conjunto distinto de directivas de configuración en el archivo de configuración del servidor web Apache:

Prefork:
<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

 Worker:
<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>


Información

En distribuciones de Linux basadas en RedHat, el servidor web Apache se configura para la ejecución por omisión con el módulo prefork. Aunque técnicamente podría cambiarse a "worker" si este se adapta mejor a sus necesidades particulares, tenga en cuenta la información detallada a continuación.

Advertencia: Parallels Plesk Panel no ha sido probado con el MPM de Apache worker y su instalación en Debian/Ubuntu conllevará la eliminación del paquete 'psa'.

Si aún así desea cambiar al módulo "worker", simplemente debe descomentar esta directiva en el archivo /etc/sysconfig/httpd:
# grep HTTPD= /etc/sysconfig/httpd
#HTTPD=/usr/sbin/httpd.worker
A continuación, reinicie Apache:
/etc/init.d/httpd restart

Tenga en cuenta que el MPM worker asume que el servidor web Apache ha configurado/cargado un módulo PHP especial:
# cat /etc/httpd/conf.d/php.conf|grep -A3 "worker.c"
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>


Una de las preguntas frecuentes de clientes e ingenieros es cómo se puede determinar en qué módulo MPM se está ejecutando el servidor.
 
En primer lugar, use la utilidad ps para determinar la línea de comandos de un proceso Apache en ejecución:
# ps aux | grep -v grep | egrep "apache|httpd"
root      1684  0.0  1.4 284484 14888 ?        Ss   17:52   0:00 /usr/sbin/httpd
apache    3101  0.0  0.7 284484  7596 ?        S    18:02   0:00 /usr/sbin/httpd

 A continuación compruebe el módulo que se está ejecutando mediante el siguiente comando:
# /usr/sbin/httpd -l | egrep "prefork|worker"

  Otra opción es comprobar el archivo de configuración /etc/sysconfig/httpd:
# grep -B 5 HTTPD= /etc/sysconfig/httpd
# The default processing model (MPM) is the process-based
# "prefork" model. A thread-based model, "worker," is also
# available, but does not work with some modules (such as PHP).
# The service must be stopped before changing this variable.
#
#HTTPD=/usr/sbin/httpd.worker

Información adicional (EN)

 MPM de Apache prefork

MPM de Apache worker

 

a914db3fdc7a53ddcfd1b2db8f5a1b9c 29d1e90fd304f01e6420fbe60f66f838 56797cefb1efc9130f7c48a7d1db0f0c 2a5151f57629129e26ff206d171fbb5f e335d9adf7edffca6a8af8039031a4c7

Email subscription for changes to this article
Save as PDF