Introducción al Problema de Límite de Memoria en Magento 2
Una de las pesadillas más frecuentes para los administradores de tiendas en línea desarrolladas en Magento 2 es encontrarse con el mensaje de error Fatal error: Allowed memory size of X bytes exhausted. Este fallo suele interrumpir tareas críticas como la compilación de código, la actualización de la base de datos o la indexación masiva de productos.
Causas Principales del Error de Memoria en Magento
El núcleo de Magento 2 y sus múltiples módulos de terceros requieren una cantidad considerable de recursos de PHP para procesar estructuras de datos complejas. Las causas más comunes incluyen:
- Un valor de
memory_limitconfigurado demasiado bajo en el archivophp.inidel servidor. - Ejecución de comandos de la consola (CLI) utilizando una versión o configuración de PHP diferente a la del servidor web.
- Módulos mal optimizados que generan fugas de memoria durante la carga de colecciones grandes.
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 de memoria permitida para PHP. Sigue estos pasos para aplicarlo:
- Accede a tu servidor mediante SSH o utiliza el administrador de archivos de tu panel de hosting.
- Localiza el archivo
php.inicorrespondiente a la versión de PHP que utiliza tu tienda Magento. Si utilizas CLI, asegúrate de editar el archivo asociado a la línea de comandos. - Busca la directiva
memory_limity modifica su valor. Se recomienda un mínimo de 2G o 4G para Magento 2:memory_limit = 4G. - Guarda los cambios y reinicia tu servicio web (Apache o Nginx) y el gestor de procesos PHP-FPM ejecutando por ejemplo:
sudo systemctl restart php8.1-fpm.
Método 2: Configurar el límite de memoria directamente en el comando CLI
Si el error ocurre exclusivamente al ejecutar tareas desde la terminal con el comando bin/magento, puedes redefinir el límite de memoria de manera temporal directamente en la ejecución:
- Abre tu terminal SSH y conéctate al directorio raíz de tu instalación de Magento.
- Ejecuta el comando problemático añadiendo la bandera
-d memory_limitantes de la llamada a PHP. Por ejemplo:php -d memory_limit=4G bin/magento setup:upgrade. - Verifica que el proceso finalice correctamente sin arrojar la excepción de memoria agotada.