Otimização de servidor para Moodle

Há um longo período em que venho acompanhando as constantes queixas dos alunos em relação ao Moodle, e quase todas elas estão relacionadas à sua lentidão e às falhas sistêmicas. Tais problemas, seja por negligência ou falta de conhecimento, resultam em consideráveis prejuízos para as instituições, chegando, por vezes, a levar ao abandono ou à necessidade de reestruturação do projeto.

O Moodle apresenta uma carga significativa para os servidores, e nem todos conseguem executá-lo com eficiência, acarretando custos elevados na hora de hospedá-lo. Assim, a otimização do servidor e do Moodle torna-se crucial, não apenas para aprimorar o desempenho, mas também para reduzir os custos de manutenção da infraestrutura e minimizar problemas operacionais.

Se você é administrador de servidor, o que fazer?

Escolha do Sistema Operacional

Servidores CentOS são de 60% a 80% mais eficientes que servidores com Windows. Além disso, o que você talvez não saiba é que servidores com CentOS são 3% mais eficientes que servidores com Ubuntu.

Se você usa o Ubuntu, continue com ele, não é tanta diferença a ponto de valer a pena a troca.

O site www.paessler.com fez um comparativo e a conclusão foi:

Enquanto o servidor baseado em Windows demorou entre 13 ms e 40 ms para responder, o servidor baseado em Linux só levou 6 ms a 9 ms.
Veja o artigo completo aqui:

Isso significa que no Windows o PHP demorou 4,4 vezes mais para executar o mesmo script PHP que no Linux.

O site netcraft.com possui uma tabela do monitoramento de vários servidores pelo mundo, e servidores Windows quase não aparecem na lista. Veja o artigo completo aqui.

O site www.icts.uiowa.edu afirma que os servidores com Windows são de 5 a 6 vezes mais lentos que Linux. Veja o artigo completo aqui.

Desafios de Armazenamento

Identificamos um obstáculo significativo no Moodle relacionado ao armazenamento. Em servidores de grande capacidade equipados com discos rígidos (HDs) de alta performance, pode ocorrer lentidão devido à limitação do disco em ler dados na velocidade demandada pelo PHP. Isso resulta em desaceleração, pois o processador é obrigado a aguardar a resposta do HD antes de prosseguir, prejudicando o processamento simultâneo em outras partes do sistema.

A seguir, abordaremos as diferenças entre vários tipos de armazenamento, destacando seus pontos positivos e negativos:

HD SSD ou Magnético?

HDs SSD são superiores aos HDs magnéticos. Um HD SSD é consideravelmente mais rápido do que um HD magnético, o que influencia diretamente na velocidade da aplicação, já que o PHP necessita ler muitos arquivos do HD.

Para ter uma ideia, alguns HD SSD podem ser até 40 vezes mais rápido do que um HD de uso magnético.

Migrar para SSD proporcionará uma melhoria significativa no desempenho do Moodle. E é possível aprimorar ainda mais? Saiba mais sobre como otimizar o armazenamento no documento completo aqui.

Escolha dos softwares

Apache ou Nginx? Qual o melhor? O mais rápido? Qual usar?

O Apache

No Apache, cada conexão gera um novo processo no servidor, resultando em uma sobrecarga significativa. Se você tiver um baixo volume de conexões, pode não perceber muita diferença em comparação com seus concorrentes.

O Apache oferece uma ampla gama de recursos, com destaque para:

  • Suporte SSL/TLS;
  • Hosts virtuais;
  • Proxy reverso;
  • Balanceamento de carga;
  • Compressão;
  • Controles de acesso;
  • Reescrita URL (mod_rewrite);
  • Log personalizado.

O Nginx

O Nginx opera de forma assíncrona, o que implica que todas as solicitações são tratadas por um único processo no servidor, resultando em respostas mais rápidas. Ele compartilha muitas características-chave com o Apache, mas se destaca ao focar em uma gama mais restrita de recursos, o que contribui para sua eficiência notável.

Uma analogia útil é comparar isso ao telemarketing, onde o Apache seria semelhante a passar a chamada por várias pessoas até chegar à resolução desejada, enquanto o Nginx seria como resolver diretamente no primeiro atendimento, resultando em uma eficiência consideravelmente maior.

O Nginx brilha especialmente em servidores de entrega de arquivos estáticos, embora no caso do Moodle, a diferença seja menos perceptível, dado o alto consumo de recursos inerente ao Moodle. No entanto, observa-se que o Moodle tende a ter um desempenho ligeiramente superior em um ambiente Nginx em comparação com o Apache.

O documento disponível para leitura aqui apresenta uma comparação detalhada entre o Apache e o Nginx. Contudo, devido à natureza pesada do Moodle para o servidor, a diferença mencionada não exerce um impacto significativo no desempenho global. Em meus testes pessoais, observei que o Nginx acelera o processo total em apenas 2% em comparação com o Apache.

Otimização de Caches no Moodle para Melhor Desempenho

O Moodle utiliza três tipos de caches essenciais para seu funcionamento, e é possível adicionar caches adicionais para aprimorar ainda mais o desempenho. Os três caches principais são:

Cache do Aplicativo

Este cache armazena dados e arquivos enviados pelos alunos, sendo composto pelo banco de dados e pela MoodleData.

Para otimizar esse cache, é recomendável melhorar o armazenamento do servidor, como a utilização de discos rígidos mais rápidos.

Cache da Sessão

Responsável por identificar o aluno que está navegando pela página, este cache é formado por Cookies e por um arquivo no servidor.

Experimentações podem ser realizadas transferindo a Sessão entre o banco de dados e um arquivo, ou vice-versa. É importante destacar que essa mudança desconectará todos os usuários temporariamente.

Cache do Pedido

Este cache registra o processamento do servidor em resposta aos pedidos dos alunos e é perdido assim que a página é enviada.

Para otimizar esse cache, é necessário comparar os diferentes tipos de memória disponíveis no mercado e selecionar a opção mais rápida e eficiente.

Ao implementar essas otimizações nos caches, é possível elevar significativamente o desempenho geral do Moodle.

Memcache para aumentar o desempenho do Moodle

Além dos caches padrão do Moodle, considere a adição do Memcache como uma poderosa ferramenta para otimizar o desempenho do sistema. Ao utilizar o Memcache no servidor em conjunto com o banco de dados, é possível notar melhorias significativas na performance do Moodle, pois ele realiza o armazenamento temporário de dados na memória. Optar por carregar dados diretamente do Memcache, em vez de acessar o banco de dados ou o sistema de arquivos, impacta positivamente a eficiência do Moodle.

Sem a implementação do Memcache, cada vez que um aluno acessa o Moodle, os dados são retirados do banco de dados, processados e, em seguida, removidos da memória após o uso. Quando esses dados são necessários novamente, uma nova consulta ao banco de dados é realizada. Ao incorporar o Memcache, assim que os dados são carregados do banco de dados, são armazenados no Memcache. Nos acessos subsequentes desse aluno, em vez de consultar diretamente o banco de dados, a primeira verificação é feita no Memcache. Se houver alterações nas informações, os dados no Memcache são atualizados ou removidos, e o próximo acesso recuperará os dados mais recentes do banco de dados.

A implementação do Memcache, portanto, não apenas acelera o acesso aos dados, mas também reduz a carga no banco de dados, resultando em uma experiência mais eficiente e rápida para os usuários do Moodle.

Em testes que realizei, observei uma diferença de performance significativa após a implementação do Memcache, resultando em uma diminuição drástica no número de falhas devido à sobrecarga do banco de dados. Essa otimização não apenas acelera o acesso aos dados, mas também contribui para uma experiência mais fluida e estável no ambiente virtual de aprendizado.

CDN

No artigo disponível no LinkedIn, você encontrará informações detalhadas sobre a configuração do BunnyCDN com o Moodle para otimizar o desempenho ao máximo.

https://pt.linkedin.com/pulse/otimizando-o-desempenho-do-moodle-guia-detalhado-de-bunnycdn-kraus-ahd4f 

Escolha do banco de dados

Na decisão entre PostgreSQL, MySQL e Oracle, é crucial avaliar as necessidades específicas do seu ambiente. Cada um desses sistemas possui características distintas, e a escolha depende de vários fatores, incluindo o tamanho da implementação e a complexidade dos dados.

Tanto Oracle quanto PostgreSQL são robustos e projetados para lidar eficientemente com grandes volumes de dados. Por outro lado, o MySQL é mais simples, mas pode enfrentar desafios de desempenho ao lidar com cargas significativas.

Para instâncias do Moodle com um número relativamente pequeno de alunos ativos, especialmente até 50.000, o MySQL pode ser a opção mais adequada. É notável por sua velocidade, facilidade de instalação e configuração, tornando-o uma escolha eficaz para ambientes menores. No entanto, é importante considerar que o MySQL pode perder desempenho em escala com grandes quantidades de dados.

Martin Langhoff apresenta argumentos a favor do PostgreSQL no link https://docs.moodle.org/29/en/Arguments_in_favour_of_PostgreSQL. Vale a pena explorar esses pontos para entender as vantagens específicas que o PostgreSQL pode oferecer, especialmente em termos de desempenho e escalabilidade para implementações mais extensas do Moodle.

Como otimizar o desempenho dentro do Moodle?

Como administrador do Moodle, você tem a capacidade de aprimorar a performance da plataforma. Existem diversas ações que você pode realizar para otimizar o desempenho do Moodle. Abaixo estão algumas delas:

A Descrição geral do desempenho

A Descrição geral do desempenho é um relatório do Moodle que mostra os detalhes mais críticos do desempenho do Moodle. Para ver esta página em seu Moodle, siga até Administração do site > Relatórios > Descrição geral do desempenho e verifique se algum dos itens esta em vermelho ou amarelo. Abaixo como deve estar seu Moodle:

A seguir, apresento um exemplo de desempenho lento no Moodle:

Desative os Logs Legados

Para isso siga até Administração do site > Plugins > Logging > Gerenciar locais de armazenamento de log e desative os Logs Legados.

Os Filtros

Siga até Administração do site > Plugins > Filtros > Gerenciar filtros e desative todos os filtros que não forem necessários.

Use argumentos com barra

Arquivos (imagens, uploads, etc) são fornecidos através de um script utilizando 'slash arguments’ (argumentos com barra). Este método facilita o cache por parte de navegadores, servidores proxy, etc.

Para habilitar vá em Administração do site > Servidor > HTTP e marque a opção Use argumentos com barra.

E se você é professor ou conteudista, o que fazer?

Não pense que você não tem nada a fazer. Todos tem um papel muito importante para fazer o Moodle mais rápido.

Segue uma pequena lista do que você pode fazer para melhorar o desempenho do Moodle.

Os blocos

O bloco Atividade recente é um dos blocos mais pesado do Moodle. Então se não for realmente necessário, remova-o.

Segundo bloco que deve ser removido é o o bloco Usuários Online que é um pouco lento se o Moodle possuir muitos usuários cadastrados. Este bloco habilitado na página inicial do Moodle é pesado de mais. 

E depois remova todos os blocos que não forem necessários no curso. Um bloco não usado é um pouco a mais de recurso que estará sendo usado, que podia ser usado para navegação de alunos.

Uploads

A gestão de uploads de arquivos apresenta desafios significativos. Em particular, arquivos do Word e outros formatos da suíte Office têm uma propensão a conter dados desnecessários e, invariavelmente, devem ser convertidos para PDF antes de serem enviados para o Moodle. A conversão é essencial, a menos que os alunos necessitem realizar edições e responder diretamente no documento original.

Incorporação de Arquivos do MS Office no Moodle

É bastante frequente a inclusão de documentos do MS Office no Moodle (Word Excel), especialmente aqueles que contêm imagens e fotografias. No entanto, é importante destacar que um arquivo que contenha apenas algumas fotos pode rapidamente se transformar em um documento de tamanho considerável, com dezenas de megabytes.

Para ilustrar, ao capturar uma foto com uma resolução de 8MP, o arquivo JPG resultante terá aproximadamente 4MB. Adicione esta imagem em um documento do MS Office e reduza significativamente o tamanho da imagem, o arquivo final pode ocupar pelo menos 6MB. Além disso, mesmo se a imagem for removida do documento, o tamanho do arquivo permanecerá inalterado, mantendo os 6MB.

No contexto específico do Word, um problema adicional é a inserção de dados desnecessários nos documentos. Para perceber isso:

  1. Abra um documento extenso no Word;
  2. Selecione todo o conteúdo;
  3. Copie e cole em um novo documento;
  4. Salve o novo documento com um nome diferente.
  5. Compare os tamanhos dos dois arquivos - o original e a cópia. Você observará que o novo documento é menor que o original!

Portanto, caso não seja necessário enviar documentos no formato MS Office, considera-se preferível optar pelo formato PDF, evitando assim o acréscimo desnecessário de tamanho aos arquivos.

Imagens

É imprescindível redimensionar e otimizar todas as imagens utilizadas no Moodle para garantir eficiência e economia de recursos.

Ao adicionar uma imagem ao Moodle com uma largura de 600px, inserir uma imagem de 1200px é excessivamente desperdiçado. Para ilustrar, observe a logo do Moodle abaixo como exemplo:

Se eu salvar a imagem com 600px de largura, ela ocupará aproximadamente 11KB de espaço em disco. No entanto, ao salvá-la com 1200px (o dobro), o tamanho aumentará para 38KB (3,5 vezes mais). Pode parecer uma diferença pequena, mas lembre-se de que isso se aplica a apenas uma das imagens no Moodle.

O objetivo da otimização é comprimir ainda mais a imagem, reduzindo-a ao menor tamanho possível sem comprometer a qualidade visível.

A seguir, apresento quatro logotipos do Moodle que otimizei. Dois deles estão em formato PNG, com resoluções de 600px e 1200px, enquanto os outros dois são em formato JPG, também nas resoluções de 600px e 1200px.

Veja que o ImageOptim reduziu uma das logos em 63%. E o PNG que ele comprimiu não tem nenhuma perda visível. Isso significa que esta imagem ocupará 63% menos recursos que a imagem original.

No Linux ou Windows use o Leanify.

Pode não parecer muito, mais lembre-se que esta é uma das imagens. Moodle tem quantas imagens?

Vídeos

Jamais faça upload de vídeo no Moodle. Moodle não foi feito para trabalhar com vídeos nativamente e você deve usar serviços especializados para isso.

Já conhece a MoodleTeca?

Paginação do curso

Se seu curso possuir muitos tópicos é ideal que você pagine seu curso. Para isso edite as configurações do curso e em Formato do curso mude o Layout do curso para Mostrar um tópico por página.

Desta forma seu cursos aparecerá assim: 

Assim, economiza recursos. Muitos.

E…

Desative todos os recursos que não são necessários;

Desativar todos os recursos que você e seus alunos não usam;

Fique por dentro de nossas novidades, ideias e atualizações