🎉 USE O CUPOM DESCONTO.FULL | 20% OFF acima de R$ 50,00

Como corrigir a lentidão do Tutor LMS com muitos alunos

Time Full Services Time Full Services
Tipo Performance & Velocidade
Nome do erro Lentidão do Tutor LMS com muitos alunos EN: Tutor LMS slow performance with many students
Severidade Grave
Descrição A lentidão de performance do Tutor LMS aparece quando a base de alunos cresce e as telas de progresso, gradebook e dashboard varrem tabelas que incham, como wp_comments e wp_usermeta. Sem cache de objeto e com a loja consultando os cursos, cada carregamento dispara dezenas de queries pesadas e o site arrasta.

O que é a lentidão de performance do Tutor LMS?

O Tutor LMS registra a atividade de cada aluno em várias tabelas do banco: o progresso de aula e a conclusão de curso ficam na tabela wp_comments, as tentativas de quiz ficam na tabela própria wp_tutor_quiz_attempts e dados de matrícula e progresso ficam espalhados em wp_usermeta e wp_postmeta. Com poucos alunos isso é leve, mas conforme a base de matrículas cresce essas tabelas incham e as telas que agregam dados de todos os alunos, como o gradebook do instrutor, o relatório de curso e o painel frontend, passam a varrer milhares de linhas a cada carregamento. Sem um cache de objeto persistente, o WordPress repete essas leituras a cada requisição. O resultado é um wp-admin e um dashboard do aluno cada vez mais lentos à medida que o número de alunos sobe.

Como identificar

  • O painel do instrutor e o relatório de cursos demoram vários segundos para abrir, e a lentidão piora de forma visível conforme o número de alunos matriculados aumenta.
  • O Query Monitor mostra centenas de queries SELECT na tabela wp_comments e em wp_tutor_quiz_attempts a cada carregamento das telas de progresso e gradebook.
  • Salvar uma tentativa de quiz ou finalizar uma aula retorna a mensagem ‘Maximum execution time exceeded’ nos picos de acesso, quando muitos alunos enviam respostas ao mesmo tempo.
  • O TTFB das páginas de curso no PageSpeed Insights sobe junto com o total de matrículas, e o uso de CPU do servidor PHP dispara nos horários de aula ao vivo.
Antes de começar: Faça backup completo do banco antes de rodar qualquer DELETE ou OPTIMIZE TABLE e teste primeiro em staging. As tabelas wp_comments e wp_usermeta guardam o progresso real e as tentativas de quiz de todos os alunos: uma exclusão errada apaga histórico de turma sem volta. Rode em horário de baixo acesso.

Como prevenir

  • Mantenha o cache de objeto persistente ligado desde o início e monitore o tempo das telas de gradebook com o Query Monitor após cada nova leva de matrículas.
  • Dimensione o servidor acima do requisito mínimo do Tutor LMS quando a base passar de algumas centenas de alunos, dando folga de memory_limit e CPU para os picos de aula ao vivo.
  • Agende uma rotina mensal de limpeza de linhas órfãs e de otimização de wp_comments e wp_usermeta, sempre com backup, para as tabelas não incharem sem controle.

Causa

  • A página da loja do WooCommerce consultando os cursos do Tutor junto com os demais produtos, com a opção Hide Course Products on Shop Page desligada, somando queries de curso à listagem em cada visita.
  • Ausência de cache de objeto persistente como Redis ou Memcached, o que faz o WordPress repetir a cada requisição as leituras de progresso e gradebook em vez de servir de memória.
  • A tabela wp_comments inchada, porque o Tutor grava ali a conclusão de aula e de curso de cada aluno, deixando lentos os SELECT que agregam o progresso de toda a turma.
  • A tabela wp_tutor_quiz_attempts com milhares de tentativas acumuladas e sem índice adequado para os filtros de aluno e de quiz usados pelos relatórios de resultado.
  • Servidor abaixo do requisito oficial do Tutor LMS, que pede PHP 7.4 ou superior e MySQL 5.7 ou MariaDB 10.1 ou superior, com memory_limit e max_execution_time apertados para o volume de alunos.
  • Linhas órfãs de matrícula e progresso de alunos já removidos acumuladas em wp_usermeta, inflando o autoload e o tamanho das tabelas que as telas do Tutor percorrem.

Como resolver

  1. Meça onde está o gargalo com o Query Monitor: instale o Query Monitor e abra a tela lenta com a sua conta de instrutor, como o gradebook ou o relatório de curso. Filtre as queries por tempo e por tabela e confirme se o peso está em leituras de wp_comments e da tabela de tentativas de quiz, para atacar a causa certa antes de mudar qualquer configuração.
    wp plugin install query-monitor --activate
  2. Confira se o servidor atende ao requisito do Tutor LMS: valide a versão de PHP e do banco contra o requisito oficial do plugin e suba os limites de execução do PHP. Servidor abaixo do mínimo trava as telas que agregam dados de muitos alunos.
    wp eval 'echo PHP_VERSION;'
    memory_limit = 512M
    max_execution_time = 120
  3. Tire os cursos da consulta da página da loja: ative a opção Hide Course Products on Shop Page nas configurações avançadas do Tutor LMS. Assim a listagem do WooCommerce deixa de consultar os produtos de curso a cada visita à loja, conforme a documentação do plugin.
    Tutor LMS -> Settings -> Advanced -> Hide Course Products on Shop Page
  4. Ative um cache de objeto persistente: habilite Redis ou Memcached no servidor e ligue o drop-in de object cache do WordPress. Com ele, as leituras repetidas de progresso e gradebook passam a vir da memória em vez de bater no banco a cada requisição.
    wp plugin install redis-cache --activate
    wp redis enable
    wp cache flush
  5. Limpe e otimize as tabelas que o Tutor faz crescer: remova as linhas órfãs de progresso de alunos já apagados e rode a otimização das tabelas que mais incham. Faça isso em horário de baixo acesso e sempre com backup recente, porque a remoção mexe direto no banco.
    DELETE um FROM wp_usermeta um LEFT JOIN wp_users u ON um.user_id = u.ID WHERE u.ID IS NULL;
    OPTIMIZE TABLE wp_comments, wp_commentmeta, wp_usermeta;
SQL
-- Diagnostico: tamanho das tabelas que o Tutor LMS faz crescer com a base de alunos
-- Rode no phpMyAdmin ou via wp db query. Troque wp_ pelo prefixo real do seu site.
SELECT table_name AS tabela,
       table_rows AS linhas,
       ROUND((data_length + index_length) / 1024 / 1024, 2) AS tamanho_mb
FROM information_schema.tables
WHERE table_schema = DATABASE()
  AND table_name IN ('wp_comments', 'wp_commentmeta', 'wp_usermeta', 'wp_tutor_quiz_attempts')
ORDER BY (data_length + index_length) DESC;

Perguntas frequentes

Por que o Tutor LMS fica lento conforme aumenta o número de alunos
Porque o Tutor registra progresso de aula, conclusão de curso e tentativas de quiz em tabelas como wp_comments, wp_usermeta e wp_tutor_quiz_attempts. Quanto mais alunos, mais essas tabelas incham, e as telas que agregam dados de toda a turma, como o gradebook, passam a varrer milhares de linhas a cada carregamento.
Qual o requisito de servidor para o Tutor LMS rodar bem
A documentação oficial pede PHP 7.4 ou superior e MySQL 5.7 ou MariaDB 10.1 ou superior. Para uma base grande de alunos, vale folgar memory_limit e max_execution_time além do mínimo, porque as telas de relatório e gradebook consomem mais memória e tempo de execução nos picos de acesso.
Cache de objeto persistente ajuda a acelerar o Tutor LMS
Ajuda muito. Sem Redis ou Memcached, o WordPress repete a cada requisição as mesmas leituras de progresso e gradebook direto no banco. Com o cache de objeto ligado, esses resultados ficam em memória e as leituras repetidas deixam de tocar o banco, aliviando as telas pesadas de relatório.
Esconder os cursos da página da loja melhora a performance
Sim. Com a opção Hide Course Products on Shop Page ligada, a listagem do WooCommerce para de consultar os produtos de curso do Tutor a cada visita à loja. Isso reduz queries em uma página muito acessada e é recomendado pela documentação do plugin para sites que vendem cursos.
Posso apagar tentativas de quiz antigas para acelerar o site
Pode, mas com cuidado e backup. As tentativas ficam em wp_tutor_quiz_attempts e wp_comments e fazem parte do histórico do aluno. Apague só dados de alunos já removidos ou de turmas encerradas, em staging primeiro, porque a exclusão é definitiva e mexe direto no banco.
Como descubro qual query do Tutor LMS está pesando
Instale o Query Monitor e abra a tela lenta com a sua conta de instrutor. Ele lista cada query, o tempo de execução e a tabela de origem. Filtre por tempo e veja se o gargalo está em wp_comments ou na tabela de tentativas de quiz, para atacar a causa certa em vez de mudar tudo no escuro.
Otimizar as tabelas do banco resolve a lentidão do Tutor LMS
Ajuda quando as tabelas estão infladas por linhas órfãs e fragmentação. Rodar OPTIMIZE TABLE em wp_comments e wp_usermeta e limpar metadados de alunos removidos reduz o tamanho que as telas do Tutor percorrem. Não substitui o cache de objeto, mas soma a ele para aguentar mais matrículas.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes