1. Optimice el hardware y el sistema operativo

a) RAM

Asegúrese de tener suficiente RAM para aumentar el rendimiento del servidor web Apache, especialmente durante el almacenamiento en caché. Cuando la memoria está llena, las solicitudes se redirigen al espacio de intercambio, lo que aumenta la latencia. Esto significa que los usuarios tendrán que volver a cargar su solicitud, lo que aumenta aún más la carga. Para solucionar este problema, es decir, limitar el número de procesos subordinados creados por el servidor web Apache, desde los cuales se redirigen a la memoria de intercambio, se debe definir el MaxRequestWorkers. Para obtener el mejor valor para esto, haga lo siguiente:

  1. Use el comando superior para verificar la cantidad promedio de RAM utilizada por el proceso de Apache
  2. Divida la cantidad total de RAM disponible por la cantidad promedio de RAM utilizada por Apache para obtener la cantidad de MaxRequestWorkers

Para aumentar el rendimiento de Apache, asegúrese de tener una CPU más rápida, una tarjeta de red más rápida y discos duros más rápidos.

b) Escriba el tamaño del búfer

Aumente el tamaño del búfer de escritura aumentando el valor en los dos archivos:

/proc/sys/net/core/wmem_max
/proc/sys/net/core/wmem_default

c) Máximo de archivos abiertos

Si el servidor web Apache está manejando cargas pesadas, se recomienda aumentar el número máximo de archivos abiertos permitidos aumentando el valor en el archivo:

/proc/sys/fs/file-max

Luego ejecute el siguiente comando:

$ ulimit -H -n 4096

2. Optimiza la configuración del tiempo de ejecución

a) Desactive .htaccess con AllowOverride

Activar AllowOverride Hace que Apache intente abrir .htaccess cada vez que se realiza una solicitud. Esto reduce significativamente el rendimiento del servidor web Apache. Usa la opción para arreglar esto AllowOverride None Como se muestra abajo:

DocumentRoot "/www/var/html"
<Directory "https://hostadvice.com/">
  AllowOverride None
</Directory>

b) Deshabilite las búsquedas de DNS con HostnameLookups

Cuándo HostnameLookups está activado, es decir, girado ONaumenta la latencia para cualquier solicitud que deba completarse después de la búsqueda de DNS. Hay dos soluciones para esto:

  1. Para registrar archivos con nombres resueltos, procese posteriormente los registros en otra computadora para evitar ralentizar el rendimiento en el servidor de producción.
  2. A menos que sea absolutamente necesario la resolución de nombres, utilice direcciones IP y desactive las búsquedas de DNS por completo utilizando la siguiente opción:
HostnameLookups off

3. Optimice la configuración en tiempo de compilación

a) Módulos de multiprocesamiento (MPM)

MPM ayuda a Apache a vincularse a los puertos de red, turnándose para utilizar procesos e hilos secundarios para aceptar y procesar solicitudes. Hay 3 tipos diferentes de MPM, cada uno adecuado para diferentes necesidades.

Trabajadores: Utiliza varios procesos secundarios, cada uno con muchos subprocesos, mientras que cada subproceso maneja una conexión a la vez. Esto es adecuado para servidores con alto tráfico de datos porque requiere menos memoria que Prefork.

Evento: Similar al MPM de trabajador en términos de subprocesos, pero permite procesar más solicitudes a la vez al proporcionar algún procesamiento a los subprocesos de soporte. Esto ayuda a liberar memoria asignada a otros subprocesos. No apto para módulos no seguros para subprocesos como mod_php.

Defecto: Utiliza varios procesos secundarios, cada uno con un solo hilo. Cada proceso procesa una conexión a la vez. Es más rápido que un trabajador, pero ocupa más memoria. Adecuado para depurar aplicaciones con módulos no seguros para subprocesos como mod_php.

Ejecute el comando para verificar su versión de MPM

$ sudo httpd -V

Producción:

[linuxuser@centos7-apache ~]$ sudo httpd -V
[sudo] password for linuxuser:
Server version: Apache/2.4.6 (CentOS)
Server built:   Apr 20 2018 18:10:38
Server's Module Magic Number: 20120211:24
Server loaded:  APR 1.4.8, APR-UTIL 1.5.2
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture:   64-bit
Server MPM:     prefork
  threaded: 	no
  forked: 	yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="/run/httpd/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

El MPM actual es prefork. Si desea cambiarlo, edítelo de la siguiente manera:

Hacia Centos 7

$ sudo vim /etc/httpd/conf.modules.d/00-mpm.conf

Hacia Ubuntu 16/04

$ sudo vim /etc/apache2/mods-available/<mpm>.load

Dónde <mpm> es mpm_prefork, mpm_event o mpm_worker

b) Eliminar módulos que no son necesarios

Algunos de los módulos que puede que no necesite en su servidor web incluyen, pero no se limitan a mod_mime, mod_dir, mod_php, mod_perl, mod_rubyEsto ayuda a ahorrar la memoria RAM utilizada por el servidor web.

en el Centos 7, para desactivar o descargar un módulo, comentario fueraLoadModule en el archivo de configuración principal o en los archivos en /etc/httpd/conf.modules.d/

en el Ubuntu 16.04 Para desactivar o descargar un módulo, ejecute el siguiente comando:

$ sudo a2dismod module_name

Cómo activar un módulo

$ sudo a2enmod module_name

Luego reinicie el servicio Apache.

Echa un vistazo a los 3 mejores servicios de hosting web