Introducción al Problema de Memoria en Magento 2
Uno de los dolores de cabeza más frecuentes para los administradores de tiendas e-commerce desarrolladas en Magento 2 es la aparición repentina del error Fatal error: Allowed memory size of X bytes exhausted. Este fallo crítico suele interrumpir operaciones clave como la compilación de código, la indexación de productos o el proceso de pago, afectando directamente la experiencia del usuario y las conversiones.
Causas Principales del Error de Memoria
El núcleo de Magento 2 es robusto pero requiere una gran cantidad de recursos del servidor. Las causas más comunes de este problema incluyen:
- Límite de memoria asignado a PHP (
memory_limit) demasiado bajo en el archivophp.ini. - Ejecución de procesos pesados en la línea de comandos (CLI) sin los parámetros de optimización adecuados.
- Módulos de terceros mal optimizados que generan fugas de memoria durante sus consultas o bucles.
- Falta de configuración óptima en el archivo
.htaccesso en el servidor web (Nginx/Apache).
Método 1: Aumentar el Límite de Memoria en el Archivo php.ini
La solución más directa es incrementar el límite de memoria permitido para los scripts de PHP en tu servidor.
- Accede a tu servidor mediante SSH o utiliza el Administrador de Archivos de tu panel de control (cPanel/Plesk).
- Localiza el archivo
php.iniactivo para tu versión de PHP (por ejemplo,/etc/php/8.1/fpm/php.ini). - Busca la directiva
memory_limity modifica su valor a un mínimo recomendado para Magento 2, como 2G o 4G:memory_limit = 2G. - Guarda los cambios y reinicia tu servidor web o servicio PHP-FPM con el comando correspondiente:
sudo systemctl restart php8.1-fpm.
Método 2: Configurar el Límite de Memoria Específico para CLI
A menudo, el error ocurre al ejecutar comandos de consola como bin/magento setup:upgrade o bin/magento indexer:reindex. Puedes forzar a PHP a usar más memoria exclusivamente en la terminal.
- Abre tu terminal SSH y conéctate al directorio raíz de tu instalación de Magento 2.
- Ejecuta el comando agregando la bandera de asignación de memoria directamente en la llamada a PHP:
php -d memory_limit=4G bin/magento setup:upgrade. - Si el proceso finaliza con éxito, repite la operación para los comandos pendientes de compilación y limpieza de caché.
Método 3: Optimizar la Configuración en el Servidor Web (Nginx o Apache)
Asegúrate de que tu servidor web no esté anulando las configuraciones de PHP mediante reglas restrictivas.
- Si utilizas Apache, revisa el archivo
.htaccessen la raíz de Magento y busca la línea:php_value memory_limit 2G. - Si utilizas Nginx, abre el archivo de configuración del host virtual y asegúrate de incluir el parámetro dentro del bloque de PHP:
fastcgi_param PHP_VALUE "memory_limit = 2G";. - Recarga la configuración de Nginx ejecutando:
sudo systemctl reload nginx.