Optimización del rendimiento de apache2

Muchos utilizan apache2 como servidor web. Sin embargo, pocos piensan en optimizar su rendimiento, lo que impacta directamente en la velocidad de carga de las páginas del sitio, la velocidad de procesamiento de scripts (en particular PHP), así como en el aumento de la carga en la CPU y el incremento del uso de RAM.

Por lo tanto, el siguiente manual debe ayudar a los usuarios principiantes (y no solo) a optimizarlo.
Todos los ejemplos a continuación se utilizaron en Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3.

Así que, comencemos.

1. Desactivación de módulos no utilizados

El primer método es simplemente desactivar los módulos que no estás utilizando:

Puedes ver la lista de módulos actualmente en uso con el comando:

apache2ctl -M

Para desactivar un módulo, utilizamos el siguiente comando:

a2dismod *nombre del módulo*

Por lo tanto, para activar un módulo, se utiliza el comando:

a2enmod *nombre del módulo*

Ten en cuenta que al utilizar a2dismod, el nombre del módulo debe escribirse sin la palabra módulo.

Por ejemplo, si en la salida del comando apache2ctl -M ves proxy_module, entonces para desactivarlo debes usar el comando — a2dismod proxy

Los módulos que más cargan el sistema (por experiencia personal) son:

  • PHP, Ruby, Perl y otros módulos para varios lenguajes de script
  • SSL
  • Rewrite
  • CGI

Así que en los casos en que no necesites estos módulos, recomiendo desactivarlos.

Además, después de desactivar cualquier módulo, recomiendo usar el comando — apache2ctl configtest, el cual verifica la configuración de los sitios utilizados y si alguno de los módulos desactivados era necesario, mostrará un error.

2. Cambio de MPM (Módulo de Procesamiento Multi) y uso de php-fpm

Por defecto, después de la instalación, apache2 utiliza MPM Prefork (1 hilo por conexión), lo que reduce notablemente el rendimiento, pero mejora la estabilidad y seguridad.

Sin embargo, para optimizar el rendimiento, recomiendo usar MPM Worker, que permite utilizar múltiples hilos para una sola conexión.

Para activarlo, utilizamos los siguientes comandos:

a2dismod mpm_prefork  \/\/Desactivamos prefork
a2dismod php7.3  \/\/Desactivamos el módulo php que depende de prefork
a2enmod mpm_worker  \/\/Activamos worker

Sin embargo, al utilizar Worker, puedes encontrarte con el problema de que el módulo php7.3 depende del módulo Prefork.

Para resolver este problema, instalaremos el módulo php7.3-fpm, que se utilizará para procesar scripts php:

apt-get update && apt-get install php7.3-fpm  // Instalamos
systemctl enable php7.3-fpm && systemctl start php7.3-fpm  // Añadimos al inicio y lo iniciamos
a2enmod php7.3-fpm && a2enconf php7.3-fpm.conf  // Activamos el módulo y su configuración

Cabe destacar que el uso de php-fpm también reducirá el uso de RAM por parte del proceso apache2 y acelerará un poco el procesamiento de los scripts php.

3. Conclusión

Así, con estas sencillas acciones, logramos optimizar el rendimiento y reducir la carga en la máquina (en este caso RPI3).

Por supuesto, hay cientos de otras opciones de optimización, como habilitar la compresión (que realmente es útil, pero en su mayoría ya está habilitada por defecto), cambiar parámetros (archivos de configuración) de MPM, desactivar HostnameLookups, etc., pero en este artículo intenté reflejar precisamente aquellos puntos que más me ayudaron y espero que también ayuden a otros.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster