Introducción
Uno de los problemas más frustrantes a los que se enfrentan los desarrolladores y administradores de e-commerce es el error Allowed memory size exhausted en Magento 2. Este fallo interrumpe procesos críticos como la compilación de dependencias, la indexación y la carga del frontend o backend, afectando directamente las ventas de tu tienda online.
Causas Principales del Error Memory Limit en Magento 2
Magento 2 es una plataforma robusta que requiere una gran cantidad de recursos de servidor para ejecutar tareas complejas. Las causas más comunes de este error incluyen:
- Configuración insuficiente de la directiva
memory_limiten el archivophp.ini. - Ejecución de comandos de la consola CLI (como
bin/magento setup:upgrade) con un límite de memoria predeterminado de PHP muy bajo. - Módulos de terceros mal optimizados que generan fugas de memoria (memory leaks) durante la carga de grandes catálogos de productos.
Método 1: Aumentar el Memory Limit en el archivo php.ini
La solución más directa es incrementar el límite de memoria asignado a PHP en el servidor web.
- Accede a tu servidor mediante SSH o utiliza el administrador de archivos de tu hosting.
- Localiza el archivo
php.inicorrespondiente a la versión de PHP que utiliza tu Magento (por ejemplo,/etc/php/8.1/fpm/php.ini). - Busca la línea correspondiente a
memory_limity asígnale un valor superior, recomendado al menos 2GB:memory_limit = 2G. - Guarda los cambios y reinicia el servicio web (Apache o Nginx) junto con PHP-FPM ejecutando:
sudo systemctl restart php8.1-fpm.
Método 2: Modificar el Límite de Memoria para la Consola CLI
A menudo, el servidor web funciona bien, pero los comandos de consola fallan porque la CLI de PHP utiliza un archivo php.ini diferente.
- Ejecuta el siguiente comando en tu terminal SSH para forzar un límite de memoria superior durante la ejecución de tareas de Magento:
php -d memory_limit=2G bin/magento setup:di:compile. - Si utilizas un gestor de procesos o cron jobs para la indexación, asegúrate de actualizar la llamada al comando incluyendo el parámetro
-d memory_limit=2G.
Método 3: Optimizar Módulos y Limpiar la Caché
Una vez ampliada la memoria, es vital limpiar los rastros de datos corruptos.
- Limpia la caché actual de la tienda ejecutando:
bin/magento cache:clean. - Elimina el contenido de los directorios de caché y generación:
rm -rf var/cache/* var/generation/* var/di/*. - Vuelve a compilar la aplicación para verificar que el proceso finaliza sin errores:
bin/magento setup:upgrade.