Dependiendo el tipo de aplicación, intensidad de uso de los servidores WEB Apache y capacidad hardware de tu sistema operativo, tendrás que configurar Apache en modo Prefork o Worker.
En mi caso, al ser WordPress una aplicación PHP, es más óptimo trabajar en modo Prefork.
Las versiones con las que estoy trabajando en el momento en el que escrito este artículo son Linux CentOS 7.5.1804 y Apache 2.4.6.
Administración de Apache 2 desde principiante a experto – Curso
Configuración de Apache en Modo Prefork
En el fichero siguiente fichero, he elegido arrancar Apache en modo Prefork, tal y como se puede observar:
Carga del módulo mpm_prefork
[root@prt53ws1 conf]# cat /etc/httpd/conf.modules.d/00-mpm.conf
# Select the MPM module which should be used by uncommenting exactly
# one of the following LoadModule lines:
# prefork MPM: Implements a non-threaded, pre-forking web server
# See: http://httpd.apache.org/docs/2.4/mod/prefork.html
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
# worker MPM: Multi-Processing Module implementing a hybrid
# multi-threaded multi-process web server
# See: http://httpd.apache.org/docs/2.4/mod/worker.html
#
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
# event MPM: A variant of the worker MPM with the goal of consuming
# threads only for connections with active processing
# See: http://httpd.apache.org/docs/2.4/mod/event.html
#
#LoadModule mpm_event_module modules/mod_mpm_event.so
[root@prt53ws1 conf]#
Configuración del módulo prefork
Y en el fichero de configuración de Apache he añadido las siguientes directivas:
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>
StartServers 16
MinSpareServers 10
MaxSpareServers 50
ServerLimit 1024
MaxClients 1024
MaxRequestsPerChild 4000
</IfModule>
# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
Comprobación de que Apache ha arrancado correctamente
Como podemos observar, el sistema ha arrancado 18 procesos de Apache (algo más del mínimo configurado):
[root@prt53ws1 ~]# ps -ef |grep -i httpd |wc -l
18
[root@prt53ws1 ~]#
Una vez que tenemos claro el modo en que vamos a arrancar Apache, de acuerdo con los requerimientos de nuestra aplicación, lo que tenemos que hacer es tunear la configuración de nuestro servidor WEB para un rendimiento óptimo. De esto hablo en el artículo Optimizando el consumo de memoria de Apache (MaxClients).
Más adelante hablaré también de PHP-FPM, para mejorar el rendimiento de las aplicaciones PHP con Apache. Pero esto será otro día 😉
Mi pasión por la tecnología me lleva constantemente a explorar las últimas tendencias y aplicaciones, buscando siempre formas de implementar soluciones innovadoras que mejoren la eficiencia. En puerto53.com comparto contenido valioso para ayudar a otros profesionales y entusiastas de la informática a navegar y dominar el complejo mundo de la tecnología. Mi especialidad en Linux RedHat.
Más sobre mí en el este enlace,