Introducción al Error de Memoria Agotada en Magento
Uno de los problemas más frustrantes a los que se enfrentan los administradores de tiendas e-commerce es el error de límite de memoria en PHP, comúnmente conocido como Fatal error: Allowed memory size of X bytes exhausted. Este fallo ocurre típicamente al compilar código, indexar datos pesados o durante la ejecución de tareas en la línea de comandos (CLI) con bin/magento debido a la alta demanda de recursos de la plataforma.
Principales Causas del Problema
Magento es una plataforma robusta que requiere una cantidad considerable de memoria RAM para procesar operaciones complejas. Las causas más comunes incluyen:
- Límite de memoria de PHP configurado con un valor demasiado bajo en el archivo
php.ini. - Ejecución de procesos en segundo plano o tareas cron que consumen todos los recursos disponibles.
- Módulos de terceros mal optimizados que generan bucles de consumo excesivo.
Método 1: Aumentar el Límite de Memoria en el archivo php.ini
La solución más directa es incrementar el parámetro memory_limit en la configuración de PHP. Sigue estos pasos:
- Accede a tu servidor mediante SSH o utiliza el explorador de archivos de tu panel de hosting (cPanel o Plesk).
- 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 que define el límite de memoria y cámbiala a un valor óptimo, como 2G o superior:
memory_limit = 2G. - Guarda los cambios y reinicia el servicio web (Apache o Nginx) y PHP-FPM ejecutando:
sudo systemctl restart php8.1-fpm.
Método 2: Modificar el Límite de Memoria Exclusivamente para Magento CLI
Si el error ocurre al ejecutar comandos en la terminal, puedes forzar a PHP a utilizar más memoria exclusivamente para las operaciones de Magento sin afectar al servidor global:
- Abre tu terminal SSH y navega hasta el directorio raíz de tu instalación de Magento.
- Ejecuta el siguiente comando para aumentar temporalmente la memoria RAM durante la ejecución:
php -d memory_limit=2G bin/magento setup:upgrade. - Si utilizas un script personalizado o tareas cron, asegúrate de incluir la bandera
-d memory_limit=2Gen cada llamada a PHP.