Introducción al Error de Límite de Memoria en Magento 2
Una de las pesadillas más comunes para los administradores de tiendas e-commerce desarrolladas en Magento 2 es encontrarse con el temido mensaje Fatal error: Allowed memory size of X bytes exhausted. Este fallo ocurre típicamente al ejecutar comandos de la consola como bin/magento setup:upgrade, durante la compilación de código, o al intentar cargar páginas con un alto tráfico y catálogos extensos. Afortunadamente, tiene solución directa ajustando los parámetros del servidor.
Causas Principales de la Falta de Memoria
Magento 2 es un framework robusto que requiere una cantidad considerable de recursos para procesar inyecciones de dependencias, generar archivos estáticos y compilar la base de datos. Las causas más frecuentes son:
- Un límite de memoria (
memory_limit) configurado demasiado bajo en el archivophp.inidel servidor. - Ejecución de procesos pesados en la línea de comandos utilizando una versión de PHP diferente a la del servidor web.
- Módulos o temas personalizados mal optimizados que generan fugas de memoria en bucles infinitos.
Método 1: Aumentar el memory_limit en el archivo php.ini
El primer paso y el más efectivo consiste en incrementar el límite de memoria asignado a PHP. Sigue estos pasos:
- 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 tienda Magento (por ejemplo,/etc/php/8.1/fpm/php.inio la ruta equivalente en tu panel cPanel). - Abre el archivo con un editor de texto como nano o vim y busca la directiva
memory_limit. - Modifica el valor actual por uno superior, recomendado para Magento 2 (al menos 2G o 4G):
memory_limit = 2G - Guarda los cambios y reinicia el servicio web correspondiente (Apache o Nginx) junto con PHP-FPM:
sudo systemctl restart php8.1-fpm
Método 2: Modificar el límite de memoria directamente en la línea de comandos
Si el error aparece únicamente al ejecutar tareas de mantenimiento mediante SSH con el comando bin/magento, es muy probable que la configuración de la CLI de PHP esté utilizando el archivo php.ini predeterminado en lugar del configurado para el servidor web. Puedes solucionar esto pasando el parámetro directamente en la ejecución:
Ejecuta tus comandos de Magento añadiendo la bandera para ampliar la memoria de forma temporal:
php -d memory_limit=4G bin/magento setup:upgradephp -d memory_limit=4G bin/magento setup:di:compilephp -d memory_limit=4G bin/magento setup:static-content:deploy -fSi deseas que este cambio sea permanente para la terminal, puedes editar el archivo php.ini ubicado en la ruta de la CLI que te devuelve el comando php --ini.
Conclusión
El error de memoria agotada en Magento 2 es fácil de mitigar una vez que identificamos qué entorno (web o CLI) está restringiendo los recursos. Asegurarse de mantener un memory_limit de al menos 2GB o 4GB garantizará que los despliegues y la indexación de tu e-commerce fluyan sin interrupciones.