sábado, 24 de febrero de 2018

Optimizar el rendimiento de un servidor web LAMPP en Linux-Ubuntu

Existen muchas formas de hacerlo (test de carga, de bases de datos, de ancho de banda, conexiones simultáneas...). Nosotros vamos a utilizar ApacheBench “ab”, que nos permite simular cientos de conexiones simultáneas a un servidor. 

ab -n500 -c10 -k http://miweb/index.html

-n Es el número de conexiones totales que van a realizarse.
 -c Es el número de clientes que va a haber conectados simultáneamente. 
-k Realiza múltiples peticiones dentro de una sesión HTTP (KeepAlive). http://miweb/index.html URL sobre la cual se realizará la petición.
Y esta es la salida correspondiente a un test de estrés con la configuración por defecto usando mpm-prefork:

Optimizar el rendimiento de un servidor web LAMPP en Ubuntu



¿Debo usar mpm-prefork o mpm-worker? 


Es preferible el uso de mpm-prefork. De ahora en adelante, salvo que se indique lo contrario específicamente, se asume que Apache está configurado para usar mpm-prefork. 
Ajustar la configuración de LAMPP editando el archivo /opt/lampp/etc/httpd.conf, hemos de añadir al final lo siguiente: 

HostnameLookups Off: Cuando Apache recibe una petición, resuelve la dirección IP y almacena el nombre de dominio en el log. El cliente tendrá que esperar hasta que la resolución se complete para que se sirva su petición, así que lo desactivamos. 

StartServers: Especifica el número de procesos hijo que se crean al iniciar Apache. Dicho número está controlado dinámicamente según la carga del servidor, no hay motivo para modificarlo. En este caso, el valor por defecto es 5. 

MinSpareServers: Número de procesos hijo en espera, listos para atender una petición. Si hay menos procesos hijo en espera que el valor de esta directiva, se crean a un ritmo máximo de uno por segundo. Para estos tests usaremos 5. 

MaxSpareServers: El número máximo de procesos hijo en espera. Para estos tests, 20.

MaxClients: Número máximo de clientes simultáneos. 

MaxRequestsPerChild: El número máximo de peticiones que un proceso hijo puede atender durante su vida. Usaremos 10.

Añadimos al final de httpd.conf

#OPTIMIZACION DEL RENDIMIENTO DEL SERVIDOR
#Estos valores son un tanto arbitrarios, los criterios de #seleccion son complejos, utilizaremos estos como prueba.
<IfModule prefork.c>
HostnameLookups Off
StartServers 5
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxCients 256
MaxRequestPerChild 10
</IfModule>

Reiniciamos el servicio

sudo service vsftpd restart

Y probamos de nuevo

ab -n500 -c10 -k http://miweb/index.html

Y esta es la nueva salida del test

rendimiento en un servidor web LAMPP en Ubuntu


Vemos que los tiempos de respuesta se han mejorado bastante con un simple cambio en el fichero de configuración.

Medidas de optimización mejoradas: gnuplot

Como ya hemos visto ab sirve para hacer pruebas de carga al servidor. También podemos enviar los datos a un archivo csv o incluso mostrarlos gráficamente en pantalla.

ab –e grafica.csv -n500 -c10 -k http://miweb/index.html

Copiamos el archivo en una carpeta a la que tengamos acceso y lo editamos para quitarle la primera línea

sudo nano /opt/lampp/httdocs/grafica.csv

Esto crea un archivo csv en la carpeta personal donde podemos consultar los tiempos de ejecución durante las pruebas.

También podemos verlas gráficamente con la herramienta gnuplot para su instalación hacemos:

sudo apt-get install gnuplot

Para ejecutar solo se necesita abrir la terminal e ingresar el comando gnuplot en la consola. Esto genera que la terminal aparezca de la siguiente manera. Ojo, antes de hacerlo hay que borrar la primera línea del archivo .csv

gnuplot>set datafile separator “,”
gnuplot> plot ‘grafica.csv’ with lines

si no funciona, hay que instalar esta librería:

sudo apt-get install gnuplot-x11

Ahora ya si deberíamos ver los datos de forma gráfica.

Simulación de carga web en un servidor LAMPP con siege

Siege no está disponible para Windows, pero se utiliza para simular la carga web en un servidor Ubuntu.
Lo primero que hay que hacer es instalar siege con:

sudo apt-get update
sudo apt-get install siege

Hacemos  una prueba de carga

Siege –t 10s –b –c30
http://localhost:80/

Esto, nos devuelve los datos de carga del servidor.

WEBmin

Esta herramienta también permite gestionar de forma fácil el rendimiento del servidor web. Desde esta herramienta podremos manejar fácilmente las cuentas de usuario, las cuotas de disco, servicios, archivos de configuración, gestión de servidores Apache, DNS, compartir archivos y otras muchas cosas.

sudo add-apt-repository  ‘deb
http://download.webmin.com/download/repository sarge contrib’
sudo add-apt-repository ‘deb
http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib’
wget
http://www.webmin.com/jcameron-key.asc
sudo apt-key add jcameron-key.asc
rm jcameron-key.asc
sudo apt-get update
sudo apt-get install webmin

Una vez instalado para acceder al panel de administración de Webmin deberemos poner la siguiente dirección en el navegador:


http://localhost:10000

Y si intentamos acceder a un ordenador remoto:

http://ipdelservidor:10000

A continuación nos pedirá un user y una contraseña, estos se corresponden a los mismos datos de acceso al servidor.



Instalación y configuración de Webalizer


Webalizer produce estadísticas anuales, mensuales, diarias y horarias. En los informes mensuales, se pueden producir varias estadísticas para mostrar un uso general, un uso por día y hora, un uso por sitios visitados, URLs, agentes de usuario (navegadores), referenciantes y país. Webalizer es altamente configurable mediante el uso de opciones en la línea de órdenes o a través de un archivo de configuración, permitiendo que el programa se ajuste a las necesidades individuales de forma fácil.
Bien, una vez vista la introducción comenzamos con su instalación.
En un terminal ponemos el siguiente comando:

sudo apt-get install webalizer

Una vez instalado pasamos a su configuración, editando el archivo /etc/webalizer/webalizer.conf

sudo gedit /etc/webalizer/webalizer.conf

para dar permisos al archivo

sudo su
chmod 755 /etc/webalizer/webalizer.conf

Cambiaremos lo siguiente:

LogFile /var/log/apache2/other_vhosts_access.log
OutputDir /var/www/webalizer
Incremental    yes
ReportTitle Estadisticas de la web
HostName   ubuntuserver14  #Si falla ponemos localhost
VisitTimeout    10
IgnoreSite  /var/www/logs

Guardamos el archivo y actualizamos Webalizer con:

sudo webalizer

Despues de haber actualizado Webalizer, reiniciamos LAMPP. Una vez reiniciado pedimos a algún compañero que nos haga una visita a nuestra página para comprobar si nos suben las visitas.
Para ver nuestra página de Webalizer pondremos en el navegador la siguiente dirección.

file:///var/www/webalizer/index.html

En estas capturas de pantalla vemos que nos suben las visitas cada vez que entran en nuestra página web.



No hay comentarios:

Publicar un comentario