Dicas e Soluções

Indexadores Magento 2 inválidos ou travados? 8 testes para reindexar sem piorar a loja

Especialista analisando o processamento de indexadores Magento em um ambiente de servidores

Indexadores Magento 2 inválidos ou travados? 8 testes para reindexar sem piorar a loja

Quando os indexadores Magento 2 aparecem como inválidos ou ficam presos em processamento, executar uma reindexação completa parece a solução mais rápida. Porém, se a causa estiver no cron, no banco de dados, no mecanismo de busca, em uma extensão ou em falta de recursos, o comando pode apenas aumentar a carga e manter o problema.

Antes de limpar caches, reiniciar serviços ou alterar tabelas, registre o horário do erro, o indexador afetado, o último deploy e as páginas com comportamento incorreto. Os oito testes abaixo ajudam a diferenciar uma atualização pendente de uma falha real e mostram quando reindexar com segurança.

O que os indexadores Magento 2 fazem?

O Magento armazena produtos, categorias, preços, clientes, regras e outras informações em uma estrutura flexível. Para que a loja consulte esses dados com mais eficiência, os indexadores criam representações preparadas para determinadas operações.

Por isso, uma falha de indexação pode aparecer de diferentes formas: preço antigo na vitrine, produto ausente em uma categoria, busca incompleta, regra promocional não aplicada ou divergência de disponibilidade. Se o sintoma for especificamente um item com saldo que aparece indisponível, siga também os testes para quando um produto com estoque aparece esgotado no Magento 2.

Um status que exige reindexação não significa necessariamente corrupção. Ele pode indicar apenas que houve uma alteração e o índice ainda precisa ser atualizado. O sinal de falha fica mais forte quando o estado não muda, o processamento nunca termina, o mesmo erro aparece nos logs ou a fila cresce continuamente.

1. Descubra exatamente qual indexador está afetado

Execute os comandos como o mesmo usuário utilizado pela aplicação e pelo cron. Evite usar a conta root apenas para contornar permissões.

php bin/magento indexer:status
php bin/magento indexer:show-mode
php bin/magento indexer:info

O primeiro comando mostra o estado, o segundo informa se cada indexador trabalha em atualização ao salvar ou por agendamento, e o terceiro relaciona os códigos disponíveis na instalação. Guarde a saída antes de qualquer intervenção.

Compare o indexador afetado com o sintoma. Se apenas a busca está desatualizada, por exemplo, não há motivo inicial para reconstruir todos os índices. Essa associação reduz o tempo de diagnóstico e evita processamento desnecessário.

2. Confirme se o modo de atualização é o esperado

No modo de atualização ao salvar, uma alteração administrativa pode iniciar o processamento durante a própria operação. No modo agendado, as mudanças são registradas e processadas posteriormente pelas rotinas do cron.

Não troque o modo apenas para remover o aviso. Primeiro confirme qual estratégia foi definida para a operação, pois a mudança pode aumentar o tempo de salvamento no painel ou transferir uma carga elevada para o agendador. Lojas com catálogos grandes também precisam considerar o volume de alterações realizadas por ERP, importações e integrações.

3. Verifique se o cron está executando com o usuário correto

Indexadores configurados por agendamento dependem do cron. Confirme no sistema operacional se a entrada existe, se chama o caminho correto da versão atualmente publicada e se não aponta para uma release antiga.

crontab -l
ps aux | grep '[c]ron:run'
php bin/magento cron:status

A disponibilidade de comandos pode variar conforme a versão e os módulos instalados. Também confira permissões sobre var, generated e pub/static. Arquivos criados por usuários diferentes durante deploys manuais podem impedir gravações posteriores.

Para consultar o histórico sem modificar dados, uma equipe com acesso autorizado pode usar uma leitura como:

SELECT job_code, status, scheduled_at, executed_at, finished_at, messages
FROM cron_schedule
WHERE job_code LIKE '%index%'
ORDER BY schedule_id DESC
LIMIT 50;

Registros repetidos como pendentes, perdidos ou com erro ajudam a localizar o período da interrupção. Não apague a tabela cron_schedule para tentar destravar o processamento: isso remove evidências e pode atingir tarefas não relacionadas à indexação.

4. Diferencie processamento ativo de indexador travado

O estado de processamento pode ser legítimo durante uma reindexação extensa. Antes de executar um reset, verifique se existe um processo PHP ativo, quanto tempo ele está rodando e se há consumo de CPU, memória ou operações no banco.

ps aux | grep '[b]in/magento'
ps aux | grep '[p]hp'
df -h
df -i

Disco sem espaço ou sem inodes pode interromper índices, logs e sessões. Da mesma forma, encerrar um processo que ainda trabalha pode deixar tarefas incompletas. Se não houver processo ativo e as evidências confirmarem um estado abandonado, o reset pode ser feito somente no indexador afetado:

php bin/magento indexer:reset codigo_do_indexador

O reset altera o estado para permitir um novo processamento; ele não corrige a causa original. Não use o comando enquanto outra reindexação estiver em andamento.

5. Leia os logs antes de limpar qualquer coisa

Pesquise o horário registrado em var/log/system.log, var/log/exception.log, logs do cron, PHP-FPM, servidor web, banco de dados e mecanismo de busca. Dependendo da configuração, parte desses registros pode estar em uma plataforma centralizada de observabilidade.

Procure pela primeira exceção, e não apenas pelos erros gerados em sequência. Falta de memória, timeout, conexão recusada, tabela ausente, violação de chave, classe de extensão incompatível ou indisponibilidade do serviço de busca exigem correções diferentes.

Não publique logs completos em chamados ou canais abertos sem revisá-los. Eles podem conter caminhos internos, URLs administrativas, parâmetros de integração e outras informações sensíveis.

6. Teste as dependências da indexação

Confirme se banco de dados, mecanismo de busca e armazenamento respondem normalmente a partir do ambiente da aplicação. Uma lentidão ou indisponibilidade nessas camadas também pode provocar filas e processos interrompidos.

No banco, observe conexões bloqueadas, consultas longas, espaço disponível e alterações recentes de configuração. Se a infraestrutura estiver em processo de atualização, confira a compatibilidade entre aplicação e banco antes de atribuir o problema ao índice. O planejamento fica detalhado no artigo sobre Magento, MySQL 8 e migração de banco.

Verifique ainda a conectividade com o serviço de busca configurado, sem desativá-lo diretamente em produção. Um indexador de catálogo pode falhar porque o destino não responde, rejeita autenticação ou atingiu limites operacionais.

7. Reindexe somente o componente necessário

Depois de corrigir a causa e confirmar que não há outro processo concorrente, execute primeiro o indexador afetado:

php bin/magento indexer:reindex codigo_do_indexador

Use o código retornado por indexer:info. Registre a duração, a mensagem final e o consumo do servidor. Em lojas de maior volume, prefira uma janela controlada, especialmente quando a reconstrução disputa recursos com checkout, importações ou processamento de pedidos.

Executar indexer:reindex sem indicar um código reconstrói todos os indexadores disponíveis. Essa opção não deve ser o primeiro teste em produção. Também não edite diretamente tabelas de estado ou changelog e não remova arquivos aleatoriamente para forçar uma reconstrução.

8. Valide a loja além do status “Ready”

Um comando concluído não garante, sozinho, que a vitrine voltou ao comportamento esperado. Teste os SKUs e cenários registrados no início:

  • produto visível na categoria correta;
  • preço simples, promocional e por grupo de cliente;
  • resultado da busca e filtros de navegação;
  • disponibilidade e botão de compra;
  • regra de catálogo aplicável;
  • páginas de produto em diferentes store views;
  • logs e status do indexador após novas alterações.

Se a reindexação causar pressão suficiente para deixar a loja indisponível, interrompa mudanças paralelas e investigue a camada que devolve o erro. O roteiro de diagnóstico do erro 503 no Magento 2 ajuda a separar aplicação, proxy, PHP e infraestrutura.

Como evitar novos travamentos dos indexadores?

Monitore duração e falhas do cron, uso de disco, memória, conexões de banco e saúde do mecanismo de busca. Deploys devem preservar o usuário correto, instalar dependências de forma previsível e impedir que duas releases executem rotinas concorrentes.

Importações também merecem controle. Um grande volume de atualizações repetidas pode criar uma fila maior do que a capacidade de processamento. Quando a falha surge depois da instalação de um módulo, compare o comportamento em homologação e revise plugins ou observers associados a produtos, preços, categorias e estoque.

Conclusão

Indexadores Magento 2 inválidos ou travados devem ser tratados como um sintoma, não como um pedido automático de reindexação completa. Identifique o componente afetado, confira modo e cron, preserve os logs, teste as dependências e reconstrua apenas o necessário.

Se o processamento continua preso ou afeta preços, busca, estoque e disponibilidade da loja, uma análise técnica do ambiente pode localizar a causa sem intervenções arriscadas no banco. A equipe do SuporteMagento.com.br pode auxiliar no diagnóstico e na recuperação controlada da operação.

Perguntas frequentes sobre indexadores Magento 2

Posso executar uma reindexação completa em produção?

É possível, mas não deve ser a primeira tentativa. A operação pode consumir CPU, memória, disco e banco de dados. Identifique o indexador afetado e, em lojas de maior porte, use uma janela controlada.

Limpar o cache corrige um indexador inválido?

Normalmente não. Cache e índice cumprem funções diferentes. Limpar o cache pode atualizar a apresentação de um dado já indexado, mas não corrige cron interrompido, falha de banco ou indexação incompleta.

Quando devo usar indexer:reset?

Somente quando houver evidência de que o indexador ficou em estado de processamento sem existir uma tarefa ativa. Depois do reset, a causa original ainda precisa ser corrigida antes da nova reindexação.

É seguro alterar mview_state ou tabelas de changelog manualmente?

Não é uma boa prática de diagnóstico. Alterações diretas podem perder referências de atualização e criar divergências silenciosas. Preserve os dados e use os comandos da aplicação, acompanhados de logs e backup.