Introducción al Error de Memoria Agotada en Magento 2
Uno de los problemas más frustrantes a los que se enfrentan los desarrolladores y administradores de tiendas e-commerce es el error Allowed memory size of X bytes exhausted en Magento 2. Este fallo crítico ocurre normalmente al ejecutar comandos de la consola CLI (como setup:upgrade o di:compile) o al cargar páginas pesadas en el frontend y backend.
Causas Principales del Límite de Memoria en Magento
Magento 2 es una plataforma robusta que requiere una gran cantidad de recursos del servidor. Las causas más comunes de este error incluyen:
- Configuración de memoria RAM insuficiente en el archivo
php.inipara la versión de CLI o web. - Procesos pesados de compilación e inyección de dependencias que superan el límite predeterminado.
- Módulos de terceros mal optimizados que generan fugas de memoria (memory leaks).
Método 1: Aumentar el Límite de Memoria en la Línea de Comandos (CLI)
Si el error ocurre al ejecutar comandos de Magento mediante SSH, puedes asignar más memoria RAM de forma temporal o permanente directamente en la ejecución del comando PHP.
- Accede a tu servidor mediante SSH con tu usuario correspondiente.
- Ejecuta el comando de Magento añadiendo la directiva para incrementar la memoria, por ejemplo:
php -d memory_limit=2G bin/magento setup:upgrade. - Si deseas hacerlo permanente para el entorno de CLI, localiza el archivo
php.iniutilizado por la línea de comandos (puedes verificarlo conphp --ini). - Abre el archivo con un editor como nano:
sudo nano /etc/php/8.1/cli/php.ini. - Busca la línea
memory_limity asígnale un valor adecuado (se recomienda un mínimo de 2G o 4G para Magento 2):memory_limit = 2G. - Guarda los cambios y sal del editor.
Método 2: Modificar el Límite de Memoria en el Servidor Web (Apache/Nginx)
Si el error se manifiesta al navegar por la tienda o al utilizar el panel de administración, debes modificar la configuración de PHP para el servidor web.
- Edita el archivo
php.inicorrespondiente a tu servidor web (FPM o Apache), por ejemplo:sudo nano /etc/php/8.1/fpm/php.ini. - Modifica la directiva de memoria:
memory_limit = 2G. - También puedes verificar el archivo
.htaccessubicado en la raíz de tu instalación de Magento 2 y asegurarte de que contenga la siguiente línea:php_value memory_limit 2G. - Reinicia tu servicio web para aplicar los cambios. En sistemas basados en Ubuntu, ejecuta:
sudo systemctl restart php8.1-fpmysudo systemctl restart nginxoapache2.
Método 3: Optimización y Limpieza de Caché
Una vez incrementada la memoria, es fundamental limpiar la caché para que Magento reconozca los nuevos recursos disponibles y elimine procesos colgados.
- Ejecuta la limpieza de caché con el nuevo límite aplicado:
php -d memory_limit=2G bin/magento cache:clean. - Realiza un ciclo completo de compilación si el problema persistía en producción:
php -d memory_limit=2G bin/magento setup:di:compile.