sql >> Base de Datos >  >> RDS >> Mysql

Cómo comparar el rendimiento de Moodle

Moodle, el sistema de gestión de aprendizaje (LMS) más popular del mundo, se implementa comúnmente en un entorno de gran escala y de rápido crecimiento. Afortunadamente, Moodle está diseñado teniendo en cuenta la disponibilidad y la escalabilidad, con muchas herramientas para ayudarnos a administrar una gran infraestructura. Las infraestructuras de Moodle a gran escala se pueden configurar en diferentes tipos de máquinas, desde bare metal hasta contenedores virtuales compartimentados (o Kubernetes Pods) y comúnmente involucrarían una arquitectura de múltiples niveles para balanceadores de carga separados, servidores web, servidores de caché, servidores de almacenamiento centralizados/agrupados y servidores de bases de datos.

En esta publicación de blog, le mostraremos cómo realizar un punto de referencia de su sitio Moodle, lo que nos permitirá comprender cómo funciona nuestro sitio Moodle en un período de tiempo determinado. En una configuración en clúster, el rendimiento de un clúster de Moodle puede verse influenciado por varios factores, como recursos de hardware, sobrecarga de virtualización, latencias de red entre servidores, firewalls, almacenamiento en caché y muchos más, y realizar puntos de referencia es una forma sólida de probar y estimar el rendimiento de Moodle. antes de que entre en producción.

Complemento de evaluación comparativa de informes

En primer lugar, es bueno tener una comprensión del terreno cuando nuestra configuración está inactiva y también en un entorno de carga pesada. Se recomienda encarecidamente instalar el complemento Report Benchmark para Moodle, que realiza varias pruebas para determinar la calidad de la plataforma Moodle mediante un sistema de puntuación. Esta puntuación compara su sistema y la velocidad con algunos valores de umbral (aceptables y críticos), como en la siguiente captura de pantalla:

Después de instalar el complemento, vaya a Administración del sitio -> Informes -> Evaluación comparativa -> Iniciar la evaluación comparativa para realizar el benchmark. Las pruebas comparativas deberían durar menos de 1 minuto y se cancelarán a los 2 minutos independientemente, lo que revelará si hay problemas en su plataforma. Cuanto más bajo sea el puntaje, mejor, y si todo está en verde, generalmente indica que nuestro sitio Moodle debe estar en buena forma. Hay básicamente 5 grupos de prueba:

  • Velocidad del servidor
  • Velocidad del procesador
  • Velocidad del disco duro
  • Velocidad de la base de datos
  • Velocidad de carga de la página

En las ocasiones en las que Moodle se comporte más lento de lo previsto, verá que aparecen algunos cuadros no verdes en el informe de referencia, como se muestra en el siguiente ejemplo:

Más abajo en el informe, puede obtener el resumen del benchmark. En el caso anterior, creamos una herramienta Apache Benchmark (ab) para realizar una prueba de esfuerzo del sitio web con 20 conexiones de usuarios simultáneas y ejecutar simultáneamente este informe de referencia y observar el rendimiento de Moodle. La justificación resumida, a pesar de ser bastante amplia en los aspectos de ajuste, podría ayudarnos a reducir el área que necesita mejoras, como la optimización de la base de datos, la memoria caché de Moodle y los recursos de hardware.

Se recomienda realizar esta prueba comparativa varias veces para obtener un promedio significativo. Si el rendimiento de tu instalación no es el óptimo, en la documentación de Moodle encontrarás algunas recomendaciones para mejorarlo. No ejecute esta evaluación comparativa en una plataforma de producción durante las horas activas, ya que podría provocar una degradación significativa del rendimiento.

Apache JMeter

Apache JMeter es una aplicación Java diseñada para probar el comportamiento funcional de carga y medir el rendimiento de aplicaciones web estáticas y dinámicas. Se puede usar para simular una carga pesada en un servidor, grupo de servidores, red u objeto para probar su fuerza o analizar el rendimiento general bajo diferentes tipos de carga.

Desde Moodle v2.5 y posteriores, viene con un generador de plan de prueba JMeter para simplificar el proceso de prueba de carga con JMeter a través de dos scripts integrados:"Hacer curso de prueba" y "Hacer plan de prueba JMeter", ambos disponibles en Administración del sitio -> Desarrollo , aumentado por un conjunto de complementos Comparación de rendimiento de Moodle. Para que pueda utilizar esta función a través de la interfaz web de Moodle, debe cambiar Moodle al modo de desarrollador en Administración del sitio -> Desarrollo -> Depuración -> Mensajes de depuración -> DESARROLLADOR:mensajes de depuración adicionales de Moodle para desarrolladores . De lo contrario, use las herramientas CLI disponibles en el directorio {Moodle}/admin/tool/generator/cli.

Tenga en cuenta que la prueba JMeter no debe realizarse en un sistema de producción. Los scripts del plan de prueba generan datos y cargan deliberadamente el servidor hasta su límite y más allá, lo que a menudo lo sobrecarga y deja de responder. Ni siquiera los ejecute en una instancia de Moodle separada en el servidor de producción, conectándose al mismo sistema de base de datos de producción, ya que afectará el rendimiento directamente.

Implementación del servidor JMeter

Para simplificar las instrucciones, ejecutamos todos nuestros comandos como usuario root. En el servidor JMeter, instale todos los paquetes necesarios:

$ sudo apt install apache2 mysql-client mysql-server php libapache2-mod-php graphviz aspell ghostscript clamav php7.4-pspell php7.4-curl php7.4-gd php7.4-intl php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-ldap php7.4-zip php7.4-soap php7.4-mbstring

Cree un usuario MySQL privilegiado para ser utilizado por la herramienta de comparación de rendimiento de Moodle. No es necesario crear una base de datos primero:

$ mysql -uroot -p
mysql> CREATE USER 'moodleperformance'@'localhost' IDENTIFIED BY 'mys3cret';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'moodleperformance'@'localhost';
mysql> exit

Cree la raíz de datos y el directorio de copia de seguridad:

$ mkdir /var/moodledata
$ chmod -R 777 /var/moodledata
$ mkdir /root/backups

Instalar Java:

$ apt update
$ apt install default-jre

Descargue Apache JMeter del sitio oficial y guárdelo en el directorio /opt:

$ wget https://downloads.apache.org//jmeter/binaries/apache-jmeter-5.4.tgz
$ tar -xzf apache-jmeter-5.4.tgz -C /opt

Obtenga la herramienta de comparación de rendimiento de Moodle de Github y colóquela en la raíz del documento predeterminado del servidor web Apache en /var/www/html, y también copie los archivos de configuración de sus plantillas:

$ cd /var/www/html
$ git clone https://github.com/moodlehq/moodle-performance-comparison
$ cd moodle-performance-comparison
$ cp webserver_config.properties.dist webserver_config.properties
$ cp jmeter_config.properties.dist jmeter_config.properties

Abra jmeter_config.properties y edite la siguiente línea:

jmeter_path=/opt/apache-jmeter-5.4

Ejecución del plan de prueba de JMeter

La forma más sencilla de ejecutar un punto de referencia de Moodle mediante el uso de esta herramienta es ejecutar un punto de referencia de Moodle local, donde los scripts extraerán automáticamente la aplicación Moodle de Github, configurarán la base de datos y establecerán las configuraciones necesarias para un entorno de prueba local. Lo que debemos hacer es especificar lo siguiente en webserver_config.properties:

dbtype="mysqli"
dbhost="localhost"
dbuser="moodleperformance"
dbpass="mys3cret"
wwwroot="http://18.141.187.189/moodle-performance-comparison/moodle"
dataroot="/var/moodledata"
backupsdir="/root/backups"

Donde 18.141.187.189 es la dirección IP pública de este servidor JMeter. Se puede acceder al Moodle que se comparará en http://18.141.187.189/moodle-performance-comparison/moodle. Una vez configurado lo anterior, vaya a /var/www/html/moodle-performance-comparison:

$ cd /var/www/html/moodle-performance-comparison

Lo primero es cargar el sitio de prueba de Moodle con un conjunto de datos. El tamaño del sitio de Moodle se puede determinar de la siguiente manera:

Tamaño

Plan de prueba

XS

1 usuario, 5 bucles y 1 período de aceleración

S

30 usuarios, 5 bucles y 6 períodos de aceleración

M

100 usuarios, 5 bucles y 40 períodos de aceleración

L

1000 usuarios, 6 bucles y 100 períodos de aceleración

XL

5000 usuarios, 6 bucles y 500 períodos de aceleración

XXL

10000 usuarios, 7 bucles y 800 períodos de aceleración

Y ejecute el script before_run_setup.sh para crear un sitio Moodle con el tamaño XS:
$ ./before_run_setup.sh XS
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.

#######################################################################
Installing Moodle (ec58cefefb2722f61f77c9a2b6a12d40a8c078a0)

Moodle site configuration finished successfully.
Creating Moodle (ec58cefefb2722f61f77c9a2b6a12d40a8c078a0) database and dataroot backups
mysqldump: [Warning] Using a password on the command line interface can be insecure.

Upgrading Moodle (ec58cefefb2722f61f77c9a2b6a12d40a8c078a0) to master

#######################################################################
'Before' run setup finished successfully.

Note the following files were generated, you will need this info when running
testrunner.sh in a different server, they are also saved in test_files.properties.
- Test plan: /var/www/html/moodle-performance-comparison/moodle/testplan.jmx
- Test users: /var/www/html/moodle-performance-comparison/moodle/testusers.csv
- Dataroot backup: /root/backup/dataroot_backup_202101090901
- Database backup: /root/backup/database_backup_202101090901.sql

Now you can:
- Change the site configuration
- Change the cache stores
And to continue with the test you should:
- Run restart_services.sh (or manually restart web and database servers if
  this script doesn\'t suit your system)
- Run test_runner.sh

Antes de comenzar con el punto de referencia, se recomienda reiniciar los servidores web y de base de datos para obtener un buen resultado de referencia:

$ ./restart_service.sh
#######################################################################
Services restarted successfully.

Now you can begin running the tests with test_runner.sh.

Ahora estamos listos para ejecutar el punto de referencia de JMeter usando el script test_runner.sh:

$ ./test_runner.sh Group1 Run1
#######################################################################
Test running... (time for a coffee?)

Jan 09, 2021 9:03:55 AM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.

Warning: Nashorn engine is planned to be removed from a future JDK release

#######################################################################
Test plan completed successfully.

To compare this run with others remember to execute after_run_setup.sh before
it to clean the site restoring the database and the dataroot.

Hemos completado nuestra primera ejecución y obtuvimos un rendimiento en un sitio simple de Moodle. En este punto, puede realizar cualquier ajuste y ajuste de rendimiento en su servidor de base de datos, PHP, servidor web Apache o cualquier otro componente relacionado con Moodle y ejecutar la segunda ejecución para comparar si el ajuste aplicado tiene sentido. Antes de realizar el segundo punto de referencia, tenemos que ejecutar el script after_run_setup.sh para preparar y limpiar el sitio de prueba de Moodle donde el script restaurará la base de datos y la raíz de datos de Moodle:

$ ./after_run_setup.sh

Ahora estamos listos para ejecutar el segundo punto de referencia:

$ ./test_runner.sh Group1 Run2
#######################################################################
Test running... (time for a coffee?)

Jan 09, 2021 9:03:55 AM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.

Warning: Nashorn engine is planned to be removed from a future JDK release

#######################################################################
Test plan completed successfully.

To compare this run with others remember to execute after_run_setup.sh before
it to clean the site restoring the database and the dataroot.

Resultados de referencia


Los resultados de referencia deberían aparecer y estar accesibles en http://18.141.187.189/moodle-performance-comparison/ . La siguiente captura de pantalla de página completa es un ejemplo de los resultados que obtendría:

La comparación nos permite comprender en qué aspectos o componentes del sitio Moodle se han mejorado entre ejecuciones. Es bueno realizar el punto de referencia varias veces para obtener un promedio significativo, antes de tomar una decisión final sobre si un ajuste en particular ha producido buenos o malos resultados en el sitio de Moodle.

Hay muchas otras formas de realizar el benchmark JMeter como se describe aquí. Puede ejecutar el punto de referencia directamente en el sitio en vivo (no recomendado), o preparar el sitio de prueba local de Moodle con los datos de producción usando la copia de seguridad de la base de datos de producción y el directorio moodledata, o también ejecutar el punto de referencia localmente contra múltiples versiones de Moodle instalación para comparar la ganancia o pérdida de rendimiento de cada versión.