Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como comparar o desempenho do Moodle

O Moodle, o sistema de gerenciamento de aprendizado (LMS) mais popular do mundo, é comumente implantado em um ambiente de grande escala e crescimento rápido. Felizmente, o Moodle é construído com disponibilidade e escalabilidade em mente, com muitas ferramentas, para nos ajudar a gerenciar uma grande infraestrutura. Infraestruturas Moodle de grande escala podem ser configuradas em diferentes tipos de máquinas, de bare metal a contêineres virtuais compartimentados (ou Kubernetes Pods) e normalmente envolvem arquitetura multicamadas para balanceadores de carga separados, servidores web, servidores de cache, servidores de armazenamento centralizados/em cluster e servidores de banco de dados.

Nesta postagem do blog, mostraremos como realizar um benchmark do seu site Moodle, o que nos permitirá entender como nosso site Moodle funciona em um determinado período de tempo. Em uma configuração em cluster, o desempenho de um cluster Moodle pode ser influenciado por vários fatores, como recursos de hardware, sobrecarga de virtualização, latências de rede entre servidores, firewalls, cache e muito mais, e realizar benchmarks é uma maneira sólida de testar e estimar o desempenho do Moodle antes de entrar em produção.

Plugin de comparação de relatórios


Antes de tudo, é bom ter uma noção básica quando nossa configuração está ociosa e também sob um ambiente de carga pesada. É altamente recomendável instalar o plugin Report Benchmark para Moodle, que realiza vários testes para determinar a qualidade da plataforma Moodle usando um sistema de pontuação. Essa pontuação compara seu sistema e velocidade com alguns valores de limite (aceitáveis ​​e críticos), assim como na captura de tela a seguir:

Depois que o plug-in estiver instalado, vá para Administração do site -> Relatórios -> Benchmark -> Iniciar o benchmark para realizar o benchmark. Os testes de benchmark devem durar menos de 1 minuto e serão abortados em 2 minutos independentemente, revelando se há preocupações em sua plataforma. Quanto menor a pontuação, melhor, e se tudo estiver verde, geralmente indica que nosso site Moodle deve estar em boa forma. Existem basicamente 5 grupos de teste:

  • Velocidade do servidor
  • Velocidade do processador
  • Velocidade do disco rígido
  • Velocidade do banco de dados
  • Velocidade de carregamento da página

Nas ocasiões em que o Moodle se comporta mais lentamente do que o previsto, você verá algumas caixas não verdes aparecerem no relatório de benchmark, conforme mostrado no exemplo a seguir:

Mais adiante no relatório, você pode obter o resumo do benchmark. No caso acima, criamos uma ferramenta Apache Benchmark (ab) para testar o site com 20 conexões de usuários simultâneos e simultaneamente executar este relatório de benchmark e observar o desempenho do Moodle. A justificativa resumida, apesar de ser bastante ampla em aspectos de ajuste, pode nos ajudar a restringir a área que precisa de melhorias, como otimização de banco de dados, cache do Moodle e recursos de hardware.

Recomenda-se realizar este teste de benchmark várias vezes para obter uma média significativa. Se o desempenho da sua instalação não for o ideal, você encontrará algumas recomendações para melhorá-la na documentação do Moodle. Não execute este benchmark em uma plataforma de produção durante o horário ativo, pois isso pode resultar em degradação significativa do desempenho.

Apache JMeter

Apache JMeter é um aplicativo Java projetado para carregar o comportamento funcional de teste e medir o desempenho de aplicativos da Web estáticos e dinâmicos. Ele pode ser usado para simular uma carga pesada em um servidor, grupo de servidores, rede ou objeto para testar sua força ou analisar o desempenho geral sob diferentes tipos de carga.

Desde o Moodle v2.5 e posterior, ele vem com um gerador de plano de teste JMeter para simplificar o processo de teste de carga com JMeter através de dois scripts embutidos - "Make test course" e "Make JMeter test plan", ambos disponíveis em Administração do site -> Desenvolvimento , aumentado por um conjunto de complementos de comparação de desempenho do Moodle. Para usar este recurso através da interface web do Moodle, você deve mudar o Moodle para o Modo de Desenvolvedor em Administração do site -> Desenvolvimento -> Depuração -> Mensagens de depuração -> DESENVOLVEDOR:mensagens extras de depuração do Moodle para desenvolvedores . Caso contrário, use as ferramentas CLI disponíveis no diretório {Moodle}/admin/tool/generator/cli.

Observe que o teste JMeter não deve ser executado em um sistema de produção. Os scripts do plano de teste geram dados e carregam deliberadamente o servidor até seu limite e além, muitas vezes tornando-o sobrecarregado e não respondendo. Nem mesmo os execute em uma instância separada do Moodle no servidor de produção, conectando-se ao mesmo sistema de banco de dados de produção, pois isso afetará diretamente o desempenho.

Implantando o servidor JMeter


Para simplificar as instruções, executamos todos os nossos comandos como usuário root. No servidor JMeter, instale todos os pacotes necessários:
$ 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

Crie um usuário MySQL privilegiado para ser usado pela ferramenta de comparação de desempenho Moodle. Não há necessidade de criar um banco de dados primeiro:

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

Crie a raiz de dados e o diretório de backup:

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

Instale o Java:

$ apt update
$ apt install default-jre

Faça o download do Apache JMeter do site oficial e armazene-o no diretório /opt:

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

Obtenha a ferramenta Moodle Performance Comparison do Github e coloque-a na raiz do documento padrão do servidor web Apache em /var/www/html, e também copie os arquivos de configuração de seus modelos:

$ 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 e edite a seguinte linha:
jmeter_path=/opt/apache-jmeter-5.4

Executando o plano de teste do JMeter


A maneira mais simples de executar um benchmark Moodle usando esta ferramenta é executar um benchmark Moodle local, onde os scripts irão automaticamente puxar o aplicativo Moodle do Github, configurar o banco de dados e definir as configurações necessárias para um ambiente de teste local. O que precisamos fazer é especificar o seguinte no 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"

Onde 18.141.187.189 é o endereço IP público deste servidor JMeter. O Moodle que será testado está acessível em http://18.141.187.189/moodle-performance-comparison/moodle . Depois que o acima estiver configurado, navegue até /var/www/html/moodle-performance-comparison:
$ cd /var/www/html/moodle-performance-comparison

A primeira coisa é abastecer o site de teste do Moodle com um conjunto de dados. O tamanho do site Moodle pode ser determinado pelo seguinte:

Tamanho

Plano de teste

XS

1 usuário, 5 loops e 1 período de aceleração

S

30 usuários, 5 loops e 6 períodos de aceleração

M

100 usuários, 5 loops e 40 períodos de aceleração

L

1000 usuários, 6 loops e 100 períodos de aceleração

XL

5000 usuários, 6 loops e 500 períodos de aceleração

XXL

10.000 usuários, 7 loops e 800 períodos de aceleração

E execute o script before_run_setup.sh para criar um site Moodle com o tamanho 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 iniciarmos o benchmark, é recomendável reiniciar os servidores web e de banco de dados para obtermos um bom resultado de linha de base:

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

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

Agora estamos prontos para executar o benchmark JMeter usando o 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.

Nós agora completamos nossa primeira execução e conseguimos um desempenho em um site Moodle simples. Neste ponto, você pode realizar qualquer ajuste e ajuste de desempenho em seu servidor de banco de dados, PHP, servidor web Apache ou qualquer outro componente relacionado ao Moodle e executar a segunda execução para comparar se o ajuste aplicado está fazendo sentido. Antes de fazermos o segundo benchmark, temos que executar o script after_run_setup.sh para preparar e limpar o site de teste do Moodle onde o script irá restaurar o banco de dados e o dataroot do Moodle:

$ ./after_run_setup.sh

Agora estamos prontos para executar o segundo benchmark:

$ ./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 do comparativo de mercado



Os resultados do benchmark devem aparecer e acessíveis em http://18.141.187.189/moodle-performance-comparison/ . A captura de tela de página inteira a seguir é um exemplo de resultados que você obteria:

A comparação nos permite entender em quais aspectos ou componentes do site Moodle foram melhorados entre as execuções. É bom executar o benchmark várias vezes para obter uma média significativa, antes de decidir se um ajuste específico introduziu resultados bons ou ruins no site Moodle.
Existem muitas outras maneiras de realizar o benchmark JMeter conforme descrito aqui. Você pode executar o benchmark diretamente no site ao vivo (não recomendado) ou preparar o site de teste do Moodle local com os dados da produção usando o backup do banco de dados de produção e do diretório moodledata, ou também executar o benchmark localmente em várias versões do Moodle instalação para comparar o ganho ou perda de desempenho para cada versão.