¿Qué es el error 'Allowed Memory Size Exhausted' en Magento 2?
El error de límite de memoria excedido en Magento 2 es uno de los problemas más comunes a los que se enfrentan los administradores de tiendas e-commerce. Ocurre principalmente al ejecutar tareas pesadas en la línea de comandos (CLI) como la compilación, la indexación, o al actualizar módulos complejos. Cuando Magento intenta consumir más memoria RAM de la permitida actualmente por el servidor PHP, el proceso se detiene de forma abrupta para evitar caídas totales del sistema.
Causas principales del agotamiento de memoria
Las razones más frecuentes por las que tu tienda Magento 2 se queda sin memoria son:
- Un valor de
memory_limitdemasiado bajo en el archivo de configuraciónphp.ini. - Ejecución simultánea de tareas intensivas en segundo plano mediante Cron Jobs.
- Módulos mal optimizados o incompatibles que generan fugas de memoria (memory leaks).
- Versiones de PHP desactualizadas que gestionan la memoria de manera menos eficiente.
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 para que Magento disponga de los recursos necesarios. 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 dominio. Si usas CLI, asegúrate de modificar elphp.inide la terminal. - Busca la línea que define el límite de memoria y cámbiala a un valor adecuado (se recomiendan al menos 2GB o 4GB para Magento 2):
memory_limit = 2G - Guarda los cambios y reinicia tu servicio web (Apache o Nginx) y PHP-FPM ejecutando:
sudo systemctl restart php-fpm
Método 2: Modificar el límite de memoria directamente desde la línea de comandos (CLI)
A veces, el entorno web tiene suficiente memoria, pero la consola (CLI) utiliza una configuración diferente. Para solucionar esto al ejecutar comandos de Magento, puedes pasar el límite directamente en la instrucción:
Ejecuta el comando afectado asignando memoria de forma temporal con la siguiente sintaxis:
php -d memory_limit=4G bin/magento setup:upgradeSi utilizas Composer para actualizar dependencias, también puedes evitar errores de memoria antes de iniciar la descarga ejecutando:
COMPOSER_MEMORY_LIMIT=-1 composer updateMétodo 3: Optimizar la configuración de PHP-FPM y OPcache
Si el error persiste a pesar de haber aumentado el límite general, es probable que la gestión de procesos esté estrangulando los recursos. Debes revisar los límites en el archivo www.conf de PHP-FPM:
- Abre el archivo de configuración de PHP-FPM (suele estar en
/etc/php/{version}/fpm/pool.d/www.conf). - Asegúrate de que los parámetros de asignación de procesos estén optimizados para tu hardware disponible.
- Verifica que OPcache esté habilitado y tenga suficiente memoria asignada en el archivo
php.ini:opcache.memory_consumption=512 - Reinicia los servicios de PHP y Nginx/Apache para aplicar los cambios de manera definitiva.