Introducción al Error de Límite de Memoria en Magento
Uno de los problemas más frustrantes a los que se enfrentan los administradores de tiendas e-commerce es encontrarse con el error Allowed memory size exhausted en Magento 2. Este fallo ocurre cuando un script de PHP, como el proceso de compilación, la indexación o la carga de módulos pesados, supera la cantidad máxima de memoria RAM asignada en el servidor.
Causas Principales del Error Allowed Memory Size en Magento
Magento es una plataforma sumamente potente pero también muy demandante de recursos. Las causas más comunes de este problema incluyen:
- Un valor demasiado bajo en la directiva
memory_limitdel archivophp.ini. - Ejecución de tareas pesadas en la línea de comandos (CLI) sin especificar un límite de memoria ampliado.
- Módulos de terceros mal optimizados que generan bucles o fugas de memoria.
- Procesos de indexación masiva o compilación de código en entornos con recursos limitados.
Método 1: Aumentar el Memory Limit en el archivo php.ini
El primer paso y el más directo es modificar la configuración global de PHP en tu servidor. Sigue estos pasos:
- Accede a tu servidor mediante FTP o SSH y localiza el archivo
php.inicorrespondiente a la versión de PHP que utiliza tu Magento (por ejemplo,/etc/php/8.1/fpm/php.ini). - Abre el archivo con un editor de texto y busca la línea que define el límite de memoria.
- Modifica el valor para asignarle al menos 2GB o 4GB, recomendado para Magento:
memory_limit = 2G. - Guarda los cambios y reinicia tu servidor web o servicio PHP-FPM ejecutando
sudo systemctl restart php8.1-fpm.
Método 2: Ampliar el Límite de Memoria desde la Línea de Comandos (CLI)
Si el error ocurre al ejecutar comandos de Magento como bin/magento setup:upgrade o bin/magento indexer:reindex, puedes forzar un límite de memoria superior directamente en la ejecución pasando un argumento a PHP:
- Abre la terminal SSH y conéctate a la raíz de tu instalación de Magento.
- Ejecuta el comando afectado añadiendo
-d memory_limit=-1al principio para eliminar restricciones temporales. - Ejemplo práctico:
php -d memory_limit=-1 bin/magento setup:di:compile. - Espera a que el proceso finalice correctamente sin restricciones de RAM.
Método 3: Optimizar Módulos y Consultas en la Base de Datos
Si el problema persiste incluso después de aumentar la memoria, es probable que exista una fuga de memoria provocada por un módulo defectuoso:
- Revisa el archivo de registros de errores de Magento ubicado en
var/log/system.logyvar/log/exception.log. - Identifica qué extensión o controlador se está ejecutando justo antes de que aparezca el fallo de memoria.
- Desactiva temporalmente el módulo sospechoso ejecutando
bin/magento module:disable Nombre_DelModulo. - Limpia la caché de Magento con
bin/magento cache:cleany verifica si el consumo de memoria vuelve a la normalidad.