Introducción al error de límite de memoria en Magento 2
Uno de los problemas más frecuentes a los que nos enfrentamos los desarrolladores y administradores de tiendas en línea con Magento 2 es el temido mensaje de error relacionado con el consumo excesivo de memoria RAM (Allowed memory size exhausted). Este fallo suele interrumpir tareas críticas como la compilación de código, la indexación por línea de comandos (CLI) o incluso la navegación de los usuarios en el frontend.
Causas principales de la falta de memoria en Magento
Magento 2 es un sistema robusto basado en componentes que requiere una cantidad considerable de recursos del servidor para procesar inyecciones de dependencias, la caché y los plugins. Las causas más comunes incluyen:
- Un valor de
memory_limiten el archivophp.inidemasiado bajo para los estándares de Magento. - Ejecución de comandos de consola pesados como
bin/magento setup:upgradeobin/magento setup:di:compile. - Módulos de terceros mal optimizados que generan bucles de consumo de recursos.
Método 1: Aumentar el memory_limit en el archivo php.ini global
La solución más directa es incrementar el límite de memoria asignado a PHP en tu servidor web. Sigue estos pasos:
- Accede a tu servidor mediante SSH o utiliza el panel de control de tu hosting (como cPanel).
- Localiza el archivo
php.inicorrespondiente a la versión de PHP que utiliza tu tienda Magento. Si usas CLI y web, es posible que existan dos archivos diferentes. - Abre el archivo con un editor de texto y busca la directiva
memory_limit. Modifica su valor a un mínimo recomendado de 2G o 4G:memory_limit = 2G - Guarda los cambios y reinicia tu servidor web (Apache o Nginx) junto con el servicio PHP-FPM:
sudo systemctl restart php-fpm
Método 2: Modificar el límite de memoria directamente en el comando CLI
Si el error ocurre exclusivamente cuando ejecutas tareas desde la terminal con el binario de Magento, puedes pasar el parámetro de memoria directamente en la ejecución sin alterar la configuración global del servidor.
Ejecuta tus comandos de la siguiente manera anteponiendo la directiva de PHP:
php -d memory_limit=4G bin/magento setup:upgradephp -d memory_limit=4G bin/magento setup:di:compileEsta es una excelente alternativa si compartes servidor y no deseas consumir 4GB de memoria de forma permanente para el tráfico web general.
Método 3: Ajustar el límite de memoria en el archivo .htaccess (Apache)
Si tu servidor utiliza Apache y no tienes acceso root para modificar el php.ini principal, puedes intentar sobrescribir el límite a través del archivo .htaccess ubicado en la raíz de tu instalación de Magento.
- Abre el archivo
.htaccessen la raíz de Magento usando tu cliente FTP o administrador de archivos. - Busca la sección de configuraciones de PHP y añade la siguiente línea:
php_value memory_limit 2G - Guarda el archivo y limpia la caché de tu tienda para aplicar los cambios correctamente.