Servidor do Moodle caindo e alunos sem conseguir entregar as tarefas

Servidor do Moodle caindo e alunos sem conseguir entregar as tarefas

Caso real de produção, contado sem identificar o cliente. Uma plataforma Moodle chegou até nós depois de uma migração mal gerida por quem cuidava dela antes. O sintoma era do tipo que tira o sono de qualquer coordenador: o servidor vivia caindo e, pior, os alunos não conseguiam entregar as tarefas, quase sempre no horário do prazo, o pior momento possível. A cada fechamento, uma enxurrada de mensagens de "não consigo enviar".

Quando isso acontece, a conclusão apressada é "o Moodle é ruim" ou "precisamos trocar de plataforma". Quase nunca é o caso. O problema não estava no Moodle: estava no que a migração mal feita deixou para trás.

Por que o erro aparece logo na entrega da tarefa

A entrega de uma tarefa é uma das operações mais pesadas para o aluno: ele faz upload de um arquivo, muitas vezes grande, e o servidor precisa recebê-lo e gravá-lo. Se a configuração está apertada, é exatamente aí que quebra. Some a isso o efeito manada, todo mundo entrega perto do prazo, e você tem o pico de carga caindo em cima da operação mais frágil. Não é azar; é configuração e dimensionamento.

As causas de verdade por trás do sintoma

Numa herança de migração mal feita, o estrago costuma estar espalhado em vários pontos ao mesmo tempo:

  • Limites de upload do PHP baixos. upload_max_filesize, post_max_size e max_input_time menores do que o arquivo (ou o tempo) que a tarefa exige. O aluno tenta enviar e o servidor corta no meio: o clássico "não consigo entregar".
  • Servidor subdimensionado para os picos. Recursos que aguentam o uso normal, mas não o momento em que centenas de pessoas entregam ao mesmo tempo.
  • Cron parado ou acumulado. Migração que esqueceu de religar o cron: tarefas em segundo plano, notificações e filas empilham até engasgar tudo.
  • Cache desligado. Sem cache, cada acesso pesa muito mais, e no pico o servidor não dá conta.
  • Banco e logs sem retenção. Tabelas de log crescendo sem limite deixam cada operação mais lenta, até o ponto de queda.
  • Nenhum teste de carga pós-migração. A plataforma "subiu e funcionou" num dia calmo, e só quebrou quando veio o primeiro prazo real.

Como estabilizamos

O caminho não é chutar: é medir e corrigir na causa. Ajustamos os limites de upload do PHP para o tamanho real das tarefas, dimensionamos os recursos para o pico (e não para a média), religamos o cron para rodar de minuto em minuto, ativamos e configuramos o cache, definimos retenção de logs e limpamos o que já tinha inchado. Por fim, a parte que a gestão anterior pulou, validamos com o cenário de pico, simulando o comportamento de fechamento de prazo antes do próximo prazo real.

O resultado

O servidor parou de cair e, o que mais importava, os alunos voltaram a entregar as tarefas normalmente: inclusive na correria do prazo. A plataforma era a mesma; o que mudou foi a configuração e o dimensionamento que a migração tinha deixado quebrados.

A moral do caso é dura, mas útil: uma migração não termina quando o site abre. Termina quando ele aguenta o pior dia: o do prazo. Fornecedor que "sobe e some" deixa exatamente esse tipo de bomba-relógio para trás. Sobre isso, veja o custo do fornecedor que some; e sobre lentidão em geral, por que o Moodle fica lento.

Perguntas frequentes

Por que o aluno não consegue enviar a tarefa no Moodle?

Na maioria das vezes não é o aluno nem o Moodle em si: são os limites de upload do PHP (upload_max_filesize, post_max_size, max_input_time) menores do que o arquivo enviado, ou o servidor sobrecarregado no horário do prazo, quando todos entregam ao mesmo tempo. O envio falha justamente no pico.

Por que o servidor do Moodle fica caindo depois de uma migração?

Uma migração mal feita costuma deixar heranças: PHP mal configurado, cron parado, cache desligado, tabelas de log sem retenção e servidor subdimensionado para os picos de acesso. Sob carga, como no fechamento de um prazo, isso derruba a plataforma. O software não mudou; a configuração e o dimensionamento é que ficaram errados.

Dá para resolver sem trocar de plataforma?

Quase sempre, sim. O caminho é diagnosticar a causa real (limites do PHP, recursos, cron, banco, cache) e corrigir cada uma, validando com o cenário de pico antes do próximo prazo. Trocar de plataforma sem entender a causa só transfere o problema.

Alejandro Argachá, especialista em Moodle

Escrito por Alejandro Argachá

Conhece o Moodle desde 2011 e, desde 2016, atua na parte técnica: servidor, código e segurança. Mais de 250 projetos entregues, boa parte para outras empresas que vendem Moodle. Resolve na prática problemas como este em plataformas de empresas e instituições brasileiras. Ver casos reais.