Introducción al problema de indexación infinita en Magento
Uno de los dolores de cabeza más comunes para los administradores de tiendas online basadas en Adobe Commerce o Magento 2 es encontrarse con que los indexadores se quedan bloqueados en estado Processing o Reindex required de manera indefinida. Esto afecta directamente al catálogo, precios y stock visibles para los clientes.
Causas principales de los indexadores bloqueados
- Procesos de cron colgados o mal configurados en el servidor.
- Tablas de la base de datos bloqueadas por consultas pesadas o bloqueos (locks).
- Memoria RAM insuficiente (memory_limit de PHP) durante la ejecución de la tarea CLI.
- Datos corruptos en las tablas de changelog de Magento.
Método 1: Reiniciar los índices y limpiar las tablas de estado por CLI
El primer paso y el más efectivo es forzar la invalidación y el borrado de los bloqueos directamente desde la terminal SSH de tu servidor.
- Accede a tu servidor mediante SSH y navega hasta la raíz de tu instalación de Magento:
cd /var/www/html/tu-tienda-magento - Cambia el modo de indexación a manual para evitar conflictos mientras solucionas el problema:
php bin/magento indexer:set-mode realuous - Limpia los estados de bloqueo eliminando los registros problemáticos en la base de datos o ejecutando el comando de reseteo:
php bin/magento indexer:reset - Ejecuta la reindexación completa de forma manual con un límite de memoria ampliado:
php -d memory_limit=2G bin/magento indexer:reindex
Método 2: Limpiar las tablas de index_status y changelog en la Base de Datos
Si el comando anterior falla o se queda congelado, es muy probable que existan bloqueos a nivel de motor de base de datos (MySQL/MariaDB).
- Accede a tu gestor de base de datos (phpMyAdmin o consola MySQL).
- Ejecuta las siguientes consultas para limpiar el estado de los indexadores:
TRUNCATE TABLE indexer_state;TRUNCATE TABLE mview_state; - Vuelve a tu terminal SSH y regenera los estados ejecutando:
php bin/magento setup:upgrade - Vuelve a ejecutar la indexación completa:
php bin/magento indexer:reindex