Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

TUNNING Y MONITORITZACIÓ SERVIDOR APACHE CON MOODLE

No description
by

yeray marquez

on 2 June 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of TUNNING Y MONITORITZACIÓ SERVIDOR APACHE CON MOODLE

Introducción
El objetivo principal del proyecto es el de desarrollar y documentar la implementación de un servidor web con herramientas para mejorar el rendimiento del mismo, como pueden ser herramientas de monitorización, de informes sobre base de datos y pruebas de esfuerzo.

Apachetop
Es una utilidad que permite, en tiempo real, procesar el fichero de log's de uno o varios sitios de apache y comprobar las conexiones al sitio en tiempo real, teniendo una mayor información de lo que hace nuestro servidor web (apache2).
Conclusión
Herramientas de monitorización
Mytop
Es una utilidad bajo línea de comandos que sirve para monitorizar las
consultas mySQL, procesos, y rendimiento general del servicio a tiempo real. Nos permite visualizar las consultas lentas (slow queries) que se ejecutan en la base de datos.
Herramientas de monitorización
MySQL Report
mysqlreport es un script en Perl que muestra un informe con formato
legible de importantes variables de estado de MySQL
(capturado de SHOW STATUS de MySQL) que puede ayudar a obtener una comprensión de lo que está sucediendo en la base de datos MySQL.
Herramientas de monitorización
APC
Es un sistema cache para PHP que reserva memoria para almacenar "bytecodes".

Sus principales ventajas son:

Reduce el tiempo en la carga de las páginas
Se puede manejar mediante el mismo PHP
Es transparente para la aplicación
Evita recompilar el código PHP por cada conexión
Disminuye la carga en el servidor, principalmente tiempo de CPU y consumo de memoria.
Herramientas de mejora de rendimiento
eAccelerator
eAccelerator es un cacheador de bytecode para PHP.

eAccelerator accede al caché de nuestro script que ya fue parseado y compilado en una solicitud anterior, sin necesidad de volver a realizar el trabajo nuevamente.
Herramientas de mejora de rendimiento
Apache JMeter
JMeter es una herramienta de prueba de carga para analizar y medir el desempeño de una variedad de servicios, con énfasis en aplicaciones web.

Soporta aserciones para asegurarse que los datos recibidos son correctos, configuración de variables y una variedad de reportes.
Pruebas de esfuerzo
Creación de plan de pruebas
Tres funcionalidades principales:

 Diseñar un testplan, esto es, generar un fichero .jmx.

 Ejecutar un testplan

 Ver de distintas formas los resultados de la ejecución de un testplan
Apache JMeter
Creación de plan de pruebas
Un testplan (fichero .jmx) es una jerarquía de componentes en forma de árbol.

Puede verse abriendo un fichero .jmx en la interfaz GUI, en el frame de la izquierda.
Apache JMeter
Creación de plan de pruebas
Grupo de hilo:

El número de hilos se refiere a la cantidad de usuarios que realizarán las peticiones definidas al servidor web

El Período de Subida (Ramp-up period) indica cuantos segundos se tardará en alcanzar el número máximo de usuarios

El contador del bucle representa el número de veces que cada hilo ejecutará la prueba.
Apache JMeter
Creación de plan de pruebas
Valores por defecto para petición HTTP:

Aquí configuraremos los valores por defecto para todas las peticiones
HTTP que añadamos a continuación
Apache JMeter
Creación de plan de pruebas
Gestor de Cookies HTTP:

Permite que cada hilo (usuario) tenga acceso a las cookies enviadas por el servidor para mantener el estado de la aplicación web (la sesión HTTP).



Apache JMeter
Creación de plan de pruebas
Peticiones HTTP:

Página Principal

Login

Listado de cursos

myMoodle

Curso de prueba



Apache JMeter
Creación de plan de pruebas
Petición HTTP de Login:

Método POST

Enviamos parámetros username, password, testcookies con la petición



Apache JMeter
Creación de plan de pruebas
Listeners:

Recopilan datos de las peticiones que realizan los samplers a los que afectan

Creación de resúmenes y gráficos para el estudio del rendimiento



Apache JMeter
Listado de aplicaciones utilizadas
Apachetop

Mytop

MySQL report

APC

eAccelerator

Apache JMeter
APC
Estadísticas de uso de la cache:

El paquete php-apc incluye un script “apc.php” que presenta en pantalla unas estadísticas de uso de la cache.
Herramientas de mejora de rendimiento
APC
System cache entries:

Listado de los scripts que han sido guardados en cache, junto con su tamaño y otra información relevante
Herramientas de mejora de rendimiento
eAccelerator
Herramientas de mejora de rendimiento
Opciones de optimización
Configurar limpieza de logs automática desde moodle
Opciones de optimización
Purgado de caches
Con esta opción podemos borrar las caches que utiliza Moodle, liberando espacio aunque podríamos notar una bajada de rendimiento hasta que el servidor y los clientes vuelvan a calcular esta información y cachearla de nuevo.
Opciones de optimización
Depuración de tablas mySQL
Cuando eliminas registros en una tabla mysql, estos no se eliminan físicamente del archivo, sino que lo que ocurre en realidad es que quedan "marcados" como borrados, y este espacio se reutiliza para nuevos registros, pero mientras no se reutilice es un espacio desaprovechado.
Entornos de prueba
Entornos de prueba
Entornos de prueba
Apachetop
La primera línea contiene la hora del último acceso, el tiempo de ejecución del comando y la hora actual.

En la segunda y tercera línea se contemplan los datos almacenados desde la ejecución del comando y en la cuarta y quita se presenta la información actual en tiempo real.

La cuarta y quinta línea muestran información idéntica al primer par, pero sólo se visualizará la media de los datos que se han leído desde el parámetro especificado durante la ejecución del programa. Por defecto, ese parámetro se establece en un valor treinta segundos.

Herramientas de monitorización
Apachetop
Herramientas de monitorización
Ejemplo Apachetop:

Mytop
Ejemplo de uso de Mytop:
Herramientas de monitorización
Mytop
Estos comandos los podemos ejecutar cuando mytop está ejecutándose para obtener datos adicionales:
Herramientas de monitorización
Mytop
Modificamos el archivo .mytop que será el archivo que mytop leerá automáticamente al ser lanzado, que contendrá la configuración para no tener que especificarla cada vez al lanzar el comando.

El uso de un archivo de configuración le ayudará a asegurarse de que la contraseña de base de datos no es visible para los usuarios de la línea de comandos.
Herramientas de monitorización
MySQL Report
Para ejecutarlo utilizamos el siguiente comando:
Herramientas de monitorización
Le indicamos el usuario y contraseña de la base de datos que queremos reportar y lo guardamos en un archivo .txt

MySQL Report
Herramientas de monitorización
Aquí vemos un ejemplo de la salida de MySQL report:

Key report:
La primera sección del informe mysqlreport es el key report, que es una de las partes más importantes porque las keys (índices) son la parte más importante de un servidor MySQL.

Current:

Esta línea indica la cantidad de key buffer de MySQL está usando en realidad en estos momentos.

Write hit:

Esta línea, write hit, indica la eficacia de las escrituras de claves. (Es la relación de escrituras de claves en el disco duro para escrituras de claves a RAM expresada como un porcentaje.)

Read hit:

Más importante que el write hit es el read hit. Esta línea indica la eficacia de las lecturas de claves. Key read no debe estar por abajo de 99%. un porcentaje menor indica fallos, y suele ser causa de un key buffer demasiado pequeño.

MySQL Report
InnoDB Buffer Pool Usage:

InnoDB almacena índices y otros datos en el buffer pool. Esta línea indica el uso del búfer de InnoDB, con el motor InnoDB, quedarse sin espacio de grupo de búfer puede causar muchos problemas debido a que casi todo se basa en el buffer pool.

Dado que las tablas de moodle son InnoDB el buffer, por defecto de 8M, se colapsa. Para mejorar este parámetro, aumentaremos el búfer añadiendo “innodb_buffer_pool_size” al archivo de configuración my.cnf de mysql.
Herramientas de monitorización
MySQL Report
Lo aumentamos a 32M y vemos la mejoría.
El uso del búfer pasa de 99% a 57% usando 18M de los 32M definidos.
Herramientas de monitorización
Creación de cursos de prueba
Herramienta de test para moodle
Debemos cambiar a la opción de Desarrollador para poder crear y hacer pruebas con Moodle.

Creación de cursos de prueba
Herramienta de test para moodle
En la herramienta Make test course, podemos elegir entre diferentes opciones según el tamaño del curso que queremos crear para cargar más o menos nuestro moodle:

Creación de cursos de prueba
Herramienta de test para moodle
En nuestro caso vamos a crear un curso “M” de unos 100M:

Creación de cursos de prueba
Herramienta de test para moodle
Vemos el resultado final, nos ha creado usuarios, foros, temas, archivos, etc. todo lo que incluiría un curso en producción.

Creación de plan de pruebas JMeter
Herramienta de test para moodle
Otra herramienta interesante de cara al testing de la plataforma Moodle, es la que nos facilita la creación de planes de JMeter.

Creación de plan de pruebas JMeter
Herramienta de test para moodle
Antes de todo tenemos que elegir el tamaño del curso que vamos analizar para hacer nuestro plan.
En nuestro caso elegimos el tamaño del curso “M”que es el utilizado anteriormente.

Creación de plan de pruebas JMeter
Herramienta de test para moodle
En la segunda opción elegimos el curso prueba que hemos creado antes con la herramienta Make test course

Creación de plan de pruebas JMeter
Herramienta de test para moodle
En el fichero config.php debemos añadir la siguiente línea seguido de la contraseña que nosotros queremos para nuestros usuarios que nos creará el sistema.

Creación de plan de pruebas JMeter
Herramienta de test para moodle
El resultado que nos muestra es un fichero .csv que contiene los usuarios creados y otro fichero .jmx donde nos ha creado el plan de pruebas para Apache JMeter.

Podemos descargar los dos ficheros de manera que podamos trabajar con ellos.

Servidor 1: Ubuntu 10.04
Comparativas de rendimiento
Servidor 2: Debian 7
Comparativas de rendimiento
Servidor 3: Windows XP
Comparativas de rendimiento
Sin apc
Diferencia de la carga de RAM entre 5 hilos y 10:
Se puede observar que con 10 hilos el servidor empieza a coger memoria de intercambio
lo que hace más lenta la respuesta.
Con 15 usuarios el servidor no podrá soportar la carga y cae como podemos comprobar
a continuación:
Con apc
Vemos como la media baja considerablemente de 300 a 100
Con apc/eAccelerator al utilizar la cache podemos llegar a lanzar 20 hilos sin que caiga excesivamente el rendimiento:
Sin APC:

Con 50 usuarios sin apc el rendimiento es muy pobre en contrapartida a con APC que
veremos el rendimiento se estabiliza.
Con APC:

Con 50 usuarios la carga del servidor está al 50% y la respuesta es buena:
Con 200 usuarios el uso de memoria ram se incrementa, aunque todavía tiene margen pero la CPU no puede soportar tantas peticiones y la respuesta se hace muy lenta siendo el rendimiento muy inestable:
Sin APC:

Con 50 usuarios
Con APC:

La media baja a 135 y la desviación a 112, sobre Windows es donde la mejora de
rendimiento es más notable.
Comparativas
En estos tiempos de Web 2.0 las aplicaciones online requieren cada vez un mejor rendimiento por parte del servidor.

Herramientas como APC y eAccelerator ayudan a mejorar el rendimiento de forma notable cuando se trabaja con páginas web con tecnología PHP de una manera rápida y eficaz.
Full transcript