Está en la página 1de 6

Optimizar Apache y Servidor para WordPress (y cualquier

script)

 ROBERTO TORMO /  24 OCTUBRE, 2017 / 1 COMMENT

Contenidos en el Articulo [Ocultar]

1 Optimizar Apache y Servidor para WordPress


1.1 Servidores Web, Apache
1.2 Donde Optimizar el rendimiento de Apache
1.3 Los módulos, Prefork o Worker
1.3.1 MPM Prefork
1.3.2 MPM Worker
1.3.3 Modulos
1.4 Optimizar Apache WordPress
1.4.1 KeepAlive
1.4.2 MaxKeepAliveRequests
1.4.3 KeepAliveTimeout
1.4.4 Variables Prefork
1.5 ¿DNS Lookup?
1.6 Conclusión
Hay múltiples consejos para optimizar nuestro script, para mejorar su velocidad, estabilidad… pero
también a nivel de servidor, podemos mejorar cuestiones importantes.

El servidor es la parte más importante, puesto que es la que aloja nuestro sitio. Sin el servidor,
nuestro sitio no está en internet. Y sí, un servidor, además de mantenimiento, también requiere ser
optimizado.

Por lo general, los servidores web son apache, y vienen con una con guración que tiene ya muchos
lustros. Y que por lo tanto, no solo están pensados para pequeños servidores, sino que además, no
están directamente pensadas para el uso en scripts como WordPress, por ejemplo. Por lo tanto, hay
que optimizarlos.

Lo primero que hay que apuntar, es que cada servidor, es un mundo. Y que por lo tanto, lo que puede
valer para un servidor, puede no ser válido para otro. En este post vamos a explicar unas directrices
generales, por lo anteriormente comentado, cada servidor es un mundo, y requiere ser analizado de
forma especí ca.

Si pre eres dejar la optimización de tu servidor en manos de profesionales, puedes contar con
nuestros servidores dedicados administrados, o bien, con nuestros planes de administración de
servidores.

Optimizar Apache y Servidor para


WordPress
Servidores Web, Apache
Apache es un servidor web HTTP de código abierto. Es el más utilizado a nivel mundial. Apache nació
en 1995, gracias al proyecto del grupo Apache basado en el servidor Apache HTTPD de la NCS.
Gracias a un listado de correo, Brian Behlendorf y Cliff Skolnick, crearon un espacio compartido para
desarrolladores. En 1999 se fundó la Fundación de Software Apache, para desarrollar el servidor.

Entre las ventajas que cuenta Apache, además de ser de código abierto, es que es gratuito, y su
compatibilidad con Windows, Linux o MacOS.

Dada su popularidad, Apache tiene la ventaja de que está en constante desarrollo. Su rendimiento es
una de las principales razones por las que optar por el. Tiene la capacidad de absorber un número
muy elevado de visitas, y es posible aumentar este rendimiento ajustando variables que Apache nos
permite con gurar.

Donde Optimizar el rendimiento de Apache


La palabra optimizar no llega hasta nuestros oídos, hasta que nuestro sitio no empieza a sufrir
problemas. De entrada es un error. Pero tiene solución.
Para optimizar Apache necesitamos acceso SSH en la gran mayoría de casos. Para acceder al
archivo de apache, generalmente, se encuentra instalado en estas rutas, dependiendo del servidor, la
distribución… :

1 /etc/apache2/apache2.conf
1 /etc/httpd/conf/httpd.conf

Lo primero que tendríamos que hacer, es un backup de dicho archivo. A continuación, mediante una
herramienta de edición de textos, como nano, vi… pasaremos a optimizar las variables de Apache.

Los módulos, Prefork o Worker


Para empezar, Apache nos va a cargar los módulos Prefork y Worker. No es que sea malo, pero si
optimizable. La idea es elegir uno. ¿Como? Expliquemos para que sirve cada modulo.

MPM Prefork
Prefork utiliza múltiples procesos secundarios con un hilo para cada uno de ellos. Y cada proceso,
nos gestionara una conexión cada vez. Prefork por lo tanto, utiliza mayor cantidad de memoria, que
worker. Aunque puede llegar a ser ligeramente más veloz. Pero su principal ventaja, es su diseño sin
hilos. Así pues, los módulos de terceros pueden usarse sin protección de hilos, siendo mucho más
fácil de depurar. Permite tener múltiples procesos secundarios, donde cada proceso nos genera un
hilo, siendo los procesos secundarios quienes gestionan las peticiones. Además, tiene mejor
aislamiento y estabilidad. Es recomendable para utilizar en scripts. Su desventaja, es un consumo de
memoria más elevado.

Estas son las directivas por defecto de Prefork:

1 StartServers       8
2 MinSpareServers    5
3 MaxSpareServers   20
4 ServerLimit      256
5 MaxClients       256
6 MaxRequestsPerChild  4000

MPM Worker
Worker, por su parte, utiliza multiples procesos secundarios, cada uno de ellos con multiples hilos.
Cada hilo gestiona una conexion a la vez. Por lo tanto, Worker, como su nombre indica, esta
preparado para trabajar duro. Es una gran opcion para servidores con tra co elevado, consumiendo
menor memoria que Prefork. En general, Worker mejora el rendimiento de Prefork. No obstante, no es
tan estable como Prefork, y si uno de los hilos se suspende, todo el proceso terminará, afectando a
todos los hilos.
Worker tiene las siguientes directivas por defecto:

1 StartServers         2
2 MaxClients         150
3 MinSpareThreads     25
4 MaxSpareThreads     75
5 ThreadsPerChild     25
6 MaxRequestsPerChild  0

Para saber que modulo esta utilizando nuestro servidor, podemos ejecutar el siguiente comando:

1 apachectl -t -D DUMP_MODULES |grep mpm

Modulos
A la hora de optimizar, una buena idea, es comprobar que módulos estamos cargando, y comprobar
si realmente nos hacen falta. Como los casos de los módulos Prefork y Worker, no es necesario tener
ambos activos, porque Apache solo utilizara uno. Por lo tanto, ¿Para que cargarlo? Pues bien, el resto
de modulos, tambien seria interesante revisarlos, y comprobar si son necesarios. Como ejemplo, el
mod_expires, es uno de los que se suele cargar, y generalmente, es uno de los más utilizados. Expires
nos permite de nir variables de caché, o el mod_de ate, otro de los muy utilizados, para la
compresión de imágenes, por ejemplo. Pero muchos otros módulos puede que no se utilicen, y estén
usando memoria valiosa para nuestro servidor. Revisa que módulos estas cargando, comprueba para
qué sirven en la documentación de apache (http://httpd.apache.org/docs/current/mod/), y decide en
base al uso que se haga del servidor.

Optimizar Apache WordPress


Ya hemos dicho que lo primero a elegir, es si optimizar sobre Prefork o Worker. Cada caso, cada
servidor, es un mundo. Si tienes muchas visitas, y muchas de ellas concurrentes, ademas de poca
memoria RAM, tu decisión debe ser clara, Worker. Si la memoria no es un problema, y tus visitas son
escalonadas, busca la estabilidad con Prefork.

En nuestro caso vamos a optimizar sobre Prefork.

KeepAlive
Establece si el servidor permite más de una solicitud por conexión. Se puede utilizar, por ejemplo,
para que un cliente no consuma demasiados recursos. Si vemos, que nuestro servidor tiene
problemas porque recibe solicitudes de cientos y miles de IPs a la vez, debemos activar KeepAlive.
Por defecto, en CentOS, viene inactiva. Editaremos el archivo de con guración, y modi caremos:

1 KeepAlive On
 

MaxKeepAliveRequests
Es la cantidad máxima de solicitudes que atenderá el servidor en una conexión TCP. Podemos limitar
la cantidad de solicitudes permitidas por conexión. Si está con gurado en 0, se permiten solicitudes
ilimitadas.

Lo ideal para este valor, es que sea alto, para obtener más rendimiento del servidor. Un valor
apropiado, podrían ser 500.

1 MaxKeepAliveRequests 500

KeepAliveTimeout
De ne el número de segundos que apache esperará la nueva solicitud de los clientes conectados,
antes de cerrar la conexión. Lo ideal, es que teniendo KeepAlive activo, este valor sea bajo. Un valor
entre 1 y 5 sería lo ideal.

1 KeepAliveTimeout 5

Variables Prefork
En cuanto a Prefork, como ya hemos visto, dispone de 5 variables a de nir.

StartServers – Establece el número de procesos hijos del servidor creados al inicio. Es buena
idea un aumento de este número en un servidor de alta carga, para que el servidor esté
preparado para utilizar muchas conexiones. Un valor recomendable sería entre 5 y 15.
MinSpareServers – Establece la cantidad mínima de procesos hijo inactivos en el servidor. Para
servidores de alta carga, este valor debe ser ajustado. Un ejemplo de valor recomendable, seria
5.
MaxSpareServers – Establece la cantidad máxima de procesos hijos inactivos en el servidor.
Esta variable es recomendable que duplique la de MinSpareServers.
MaxClients – Establece cuántas solicitudes simultáneas podrá utilizar Apache. Al llegar a este
límite cualquier otro intento se pondrá en cola, y no se procesara hasta que nalice alguna. No
hay que confundir solicitudes simultáneas con visitas. Para ajustar esta variable, puedes utilizar
la fórmula de MaxClients = Memoria RAM Total – Memoria RAM utilizada para otro proceso,
exceptuando los procesos de apache / Memoria utilizada por un único proceso de Apache.
MaxRequestsPerChild – Esta directiva establece cuántas solicitudes manejara un proceso hijo
antes de terminar. Una vez se alcanza el límite, el proceso secundario, muere. Si el valor es 0, no
morirá nunca. Por lo tanto, lo ideal es que este valor esté en una variable entre 5000 y 1000.
Está, por lo tanto, sería nuestra con guración de prefork, para un servidor con WordPress, visitas
escalonadas, y que la memoria RAM no supone un problema.

1 StartServers       5
2 MinSpareServers    5
3 MaxSpareServers   10
4 ServerLimit      150
5 MaxClients       150
6 MaxRequestsPerChild  10000

¿DNS Lookup?
Por último, vamos a hablar sobre algo, que es la razón principal de que apache pueda ser lento. Es el
tiempo requerido para realizar la búsqueda DNS. En el access.log de Apache, este registrará el
nombre del host completo de cada conexión entrante. Esto consume una cantidad de tiempo
signi cativa, y mucho más, si acceden muchos usuarios a la vez.

Veri ca que HostnameLookups está en Off, ya que podría ser la causante de un problema en tu
servidor.

Conclusión
Optimizar Apache no tiene porque ser traumático. Y no es un problema. Es una solución a muchos
problemas. Puede ser tan importante como la optimización sobre el propio script. Una mala
optimización, nos puede llevar a perder visitas, y mucho dinero. Si no esta seguro de cómo proceder,
siéntete libre de dejarnos un comentario, o bien, puedes optar por nuestros servicios, tanto a nivel de
servidores dedicados, ya administrados, como con nuestros planes de administración.

También podría gustarte