blog webempresa

¿Cómo aumentar el límite de memoria PHP en WordPress?

por | Abr 18, 2024 | Errores en WordPress

Imagen destacada - ¿Cómo aumentar el límite de memoria PHP en WordPress?

No es habitual, principalmente en un Hosting bien optimizado para trabajar con WordPress el que se presenten problemas de memoria cuando se están ejecutando procesos, normalmente desencadenados por la ejecución de plugins en la mayoría de casos, pero en caso de que aparezcan es importante que sepas cómo aumentar el límite de memoria PHP en WordPress para resolverlos.

Si se puede dar el caso de pasar una instalación del servicio de WordPress.com a un Hosting propio (self-hosted o autoalojado) y en el proceso de importación de entradas, páginas y demás elementos permitidos por WordPress.com, mediante el correspondiente archivo XML te encuentres con errores de memoria, u otros derivados del proceso lanzado, que normalmente suele ser importantes a efectos de consumo de recursos en el servidor, dependiendo de la cantidad de elementos a importar.

En muchos servidores, las cantidades de memoria por defecto asignadas a WordPress no son suficientes para manejar determinados procesos o tareas, o están limitadas si se trata por ejemplo de CloudLinux.

Afortunadamente, el aumento del límite de memoria en WordPress puede hacerse de forma sencilla, dentro de los límites establecidos en el archivo php.ini, del lado del servidor, para tu cuenta de Hosting.

Cuando digo “lado del servidor” me estoy refiriendo a todo lo que WordPress ejecuta en el servidor antes de entregar los contenidos en HTML al cliente que sería el usuario que hace la petición de una página desde su navegador.

Este ajuste puede ser necesario en caso de que recibas avisos como Tamaño de la memoria de xxx bytes agotado, en inglés:

      Allowed memory size of xxxxxx bytes exhausted.

Pero antes de continuar, te muestro algunos puntos importantes para situarte mejor en el contexto del problema…

  Vídeo de la asignación de memoria en WordPress

 

En este vídeo te cuento, en apenas 5 minutos, cómo ampliar la memoria asignada a tu instalación de WordPress añadiendo un define en el archivo wp-config.php.

 

  Qué es la memoria PHP

 

Es difícil explicar esta cuestión sin ponerse demasiado técnico, derivado de la complejidad que representa este concepto, pero voy a tratar de simplificarlo sin dejar de darle sentido a la definición de lo que es. 🤔

El acrónimo PHP (del inglés Hypertext Preprocessor) es un lenguaje de programación interpretado, de alto nivel, incrustado en páginas HTML (lenguaje de marcado) que se ejecuta del lado del “servidor”.

La memoria PHP de un servidor se asigna y desasigna de forma dinámica a los diferentes procesos que suceden en el servidor, en el caso de la memoria asociada a las cuentas de Hosting de los usuarios.

Cuando digo memoria, naturalmente me refiero a memoria RAM que consumen procesos de PHP, que no son más que scripts o programas que se ejecutan, y por cada script PHP en ejecución hay un proceso que está consumiendo recursos en el servidor, entre ellos memoria RAM.

Estos scripts de PHP se ejecutan en un “servidor” Apache (caso de Webempresa), también Nginx, lo que permite a su vez ejecutar scripts de PHP desde el navegador “cliente”.

El proceso desmenuzado de cómo se produce todo esto sería:

El usuario desde su navegador realiza una petición de una página a un servidor de Internet ➜ https://dominio.com y el servidor accede a la página escrita en PHP, procesa ese código y lo devuelve al navegador del “cliente” ya interpretado bajo HTML.

Quizás una imagen en este caso valga más que mil palabras…

Esquema del funcionamiento de PHP

Cada petición en sí tiene un consumo de memoria en el servidor, y teniendo en cuenta que en WordPress por parte del núcleo (core) hay unas cuantas peticiones, si le sumamos las que realicen los plugins que estén pintando información en la página solicitada, más los scripts de “terceros” (fuentes de Google, emojis, Ads, etc.)

Al final son un buen puñado de procesos corriendo y la RAM asignada a tu cuenta de Hosting se va a resentir, motivo por el cual tienes que saber la que tienes asignada y cómo ampliarla dentro de los límites permitidos por el servidor en relación con el producto que tengas contratado.

  ¿Cuál es el límite de memoria de WordPress?

 

El límite de memoria de WordPress hace referencia a la cantidad máxima de memoria que puede utilizar un sitio de WordPress para ejecutar las operaciones y procesos necesarios para su funcionamiento.

¿Cuál es el límite máximo de memoria de WordPress? Dicho límite está establecido por defecto en 40 MB para cada proceso de WordPress, aunque se puede aumentar manualmente, siendo el límite máximo de memoria de 512 MB aunque esto va a depender mucho de tu proveedor de Hosting y los límites que este establezca en el archivo php.ini del servidor donde se aloje tu cuenta de Hosting.

Si el límite que se establece es demasiado bajo puede provocar errores como Fatal error: Allowed memory size of xxxx bytes exhausted o de “fuera de memoria” (Out of memory), provocando que tu sitio no cargue, se caiga o se vuelva inestable.

De la misma forma, un límite de memoria demasiado alto puede afectar negativamente al rendimiento de tu servidor, especialmente si tu web se aloja en un servidor compartido con otros sitios web.

Cuando WordPress alcanza su límite de memoria predeterminado, intenta aumentarlo automáticamente a 40 MB para sitios individuales y 64 MB para instalaciones multisitio.

Si esto no es suficiente, aparece un mensaje de error fatal. Establecer un límite de memoria de 128 MB suele ser suficiente para la mayoría de páginas, a menos que hayas instalado un plugin que requiera más memoria.

¿No sabes que consumo de memoria está teniendo tu WordPress?, puedes usar el plugin Server IP & Memory Usage Display y monitorear el uso de memoria por parte de cada plugin instalado para desactivar aquellos que consuman demasiada memoria y así evitar sobrecargar el servidor.

Plugin Server IP & Memory Usage Display

Este plugin muestra información en el pie de página del dashboard de WordPress que incluye el límite de memoria, el uso actual de la memoria, la versión de PHP y la dirección IP del servidor.

Con estos datos puedes controlar rápida y fácilmente estos detalles importantes mientras trabajas en el sitio.

El plugin te indica visualmente si el uso de memoria está por encima de ciertos umbrales críticos, lo que te va a permitir tomar decisiones rápidas en cuanto a la gestión de recursos y el rendimiento del sitio antes de que se vea afectado.

Monitorización de consumos con el plugin Server IP & Memory Usage Display

Si no quieres instalar este u otro plugin similar, puedes consultar dicha información desde Herramientas ➜ Salud del sitio en la pestaña Información y dentro de esta en la fila Constantes de WordPress, donde verás los valores de dichas constantes.

WP_MEMORY_LIMIT	40M
WP_MAX_MEMORY_LIMIT	512M

Desde este apartado no es posible modificar los valores de las constantes mostradas, es solamente a título informativo.

Valor de las constantes de memoria en WordPress

  Por qué sucede Allowed Memory Size Exhausted

 

El servidor con el fin de evitar quedarse sin recursos se configura de forma que no exceda de una cantidad de memoria. Si uno o varios procesos lanzados por scripts tratan de consumir más cantidad de memoria, pueden provocar mensajes de error como el indicado.

       Tamaño de memoria permitido de xxx bytes agotado.

En inglés (que es lo habitual en mensajes de este tipo del servidor) puede ser Allowed memory size of xxxxxx bytes exhausted donde xxx sería la memoria asignada en el archivo php.ini de la cuenta de Hosting en la que se ejecutan esos procesos.

Al final, los servidores tienen sus propias medidas de contención, encapsulando las cuentas de Hosting, de manera que lo que suceda “de más” en una cuenta no afecte a otra cuenta de otros clientes alojados en Hosting compartidos.

Muchos plugins para WordPress que no están refinados (código no depurado, espagueti) en muchas ocasiones son causante de errores de esta naturaleza que suelen quedar reflejados en el archivo error_log de la cuenta de Hosting del usuario, en la carpeta principal de esa cuenta.

  Error fatal: Allowed memory size of 47620926 bytes exhausted (tried to allocate 3225115 bytes) in /path/to/wordpress/file.php on line 1201

Otros errores suelen estar relacionados con la versión de PHP que se ejecuta en la cuenta de Hosting o del sitio web específico, si se tienen varias webs instaladas, por lo que es importante saber qué versión de PHP corre en cada instalación de WordPress y cómo cambiarla.

  Cómo aumentar la memoria PHP

 

En WordPress, desde la versión 2.5 en que se incorporó esta posibilidad, es posible ampliar el valor mínimo por defecto aplicado por el servidor para tu cuenta, añadiendo en el archivo wp-config.php de la instalación afectada la siguiente línea:

define( 'WP_MEMORY_LIMIT', '128M' );
     Este ajuste aumenta la memoria solo para WordPress, no otras aplicaciones. Por defecto, WordPress intentará aumentar la memoria asignada de 40 MB en PHP (el código está al principio del archivo /wp-includes/default-constants.php) para un solo sitio y 64 MB para varios sitios, por lo que el define añadido en el archivo wp-config.php debe reflejar un valor mayor de 40 MB o 64 MB dependiendo de la configuración.

Este define carga una constante global que establecerá el límite de memoria de tu cuenta, para esta instalación en 64 MB.

Lo normal es que un Hosting permita (según limitaciones de CloudLinux) ampliar a 900 MB lo que sería igual a 60 procesos simultáneos, pero naturalmente esto dependerá del servidor, de la cuenta y sus particularidades.

Establecer un límite como el siguiente debería permitir trabajar holgadamente a la mayoría de instalaciones clásicas de WordPress:

define( 'WP_MEMORY_LIMIT', '256M' );
define WP_MEMORY_LIMIT

Para casos excepcionales, cuentas de Hosting con sitios web que tienen mayor cantidad de tráfico y consumo de recursos, lo recomendado es consultar con tu servicio de Hosting para que revisen tu caso y te planteen las opciones que tienes.

Si ya por defecto tienes establecido un valor igual o superior al que quieres invocar mediante la constante global, no es necesario que lo apliques en el archivo wp-config.php, pues prevalecerá el valor superior asignado en el archivo php.ini en el servidor donde se aloja tu cuenta.

Cabe decir que la mayoría de servicios de Hosting establecen por defecto como valor 8 MB para el límite de memoria y por mucho que te empeñes en llamar mediante la citada constante global a un valor superior, no tendrás forma de que el cambio sea eficaz, en estos casos plantéate cambiar de Hosting hacia uno que te dé los recursos que tu web necesita.

Si necesitas aplicar esta ampliación para el dashboard de tu WordPress, entonces puedes utilizar la siguiente constante global:

define( 'WP_MAX_MEMORY_LIMIT', '300M' );

Este valor debe ser declarado al principio del archivo wp-config.php

Sin embargo, no es la única forma de modificar la memoria asignada, ni la más recomendada. A continuación te explico esto mismo con el procedimiento adecuado si tu Hosting dispone de esta funcionalidad.

  Cuál debería ser la memoria PHP en WordPress

 

La memoria, como todo, “es limitada” y no existe el concepto ilimitado para algo que tiene su base en un recurso de hardware limitado en capacidad de procesamiento. La memoria RAM tiene tamaños y en función del servidor hay más o menos módulos de memoria que pueden ser instalados, y esto, al final es lo que pone un límite a la memoria disponible dentro de la arquitectura del servidor.

WordPress establece límites de entre 32 MB y 40 MB, por defecto, y en muchas ocasiones este valor se ignora y muchos usuarios ni lo configuran, quizás también porque sus instalaciones de WordPress son pequeñas y no requieren muchos recursos porque posiblemente albergan solo landing pages o pequeños sitios corporativos con pocas peticiones y por ende pocos procesos en paralelo ejecutándose en el servidor donde se alojen esas cuentas de Hosting.

A medida que un sitio web creado con WordPress crece en prestaciones, número de páginas y sobre todo elementos multimedia, aumentan las peticiones, que unidas al aumento del tráfico (visitas) harán que los procesos aumenten y que la memoria asignada vaya quedando reducida hasta ser superada y esto sea el origen de los errores que vengo comentándote en este artículo.

Si no se resuelve el problema, aumentando la memoria, los recursos gráficos, como vídeos imágenes, animaciones y otros no serán servidos del lado del cliente en su navegador y en su defecto se verán pantallas en blanco, páginas que no completan su carga y otros errores derivados de esta falta de memoria asignada.

Ya te lo mostré anteriormente, pero conviene repasarlo, y es que desde tu dashboard de WordPress en Herramientas ➜ Salud del sitio ➜ Información ➜ Servidor puedes ver la memoria asignada y otras directivas asociadas con sus correspondientes valores.

Salud del sitio - Memoria

Otra forma de obtener este tipo de datos desde tu WordPress es con plugins como Memory Meter que te muestran información sobre la memoria asignada y el porcentaje de memoria consumida en tiempo real.

Plugin Memory Meter

El plugin registra el uso de memoria mientras los usuarios navegan por tu sitio web, proporcionando registros actualizados y resaltando aquellos registros donde el uso de memoria excede ciertos porcentajes específicos.

En el dashboard de tu web se muestra un medidor de memoria en la barra de administración que indica el uso de memoria a medida que se navega por el sitio y el panel de control, e incluye varias opciones de configuración.

Plugin Memory Meter - Medidor de memoria en el dashboard de WordPress

Otra cosa interesante de este plugin es que en la pestaña Logs del mismo, te muestra el consumo de memoria en MB y en porcentaje % del total asignado para cada archivo o script PHP que se esté ejecutando, lo que te va a ayudar mucho para detectar posibles cuellos de botella o aquel plugin o Tema que tiene archivos responsables del exceso de consumo de memoria.

Plugin Memory Meter - Logs

Con esta información, que varía de forma dinámica basándose en las conexiones simultáneas activas en tu web, plugins instalados que estén sirviendo datos y otros aspectos de la dinámica de tu instalación web, podrás hacerte una idea de cómo están las cosas en tu web y si tienes que ampliar memoria o no.

Entre plugins como este y la Salud del sitio de WordPress, tienes información suficiente para saber qué sucede con la memoria de tu cuenta de Hosting.

  Conclusiones

 

Aumentar el límite de memoria PHP en WordPress puede ser necesario para permitir que el CMS maneje correctamente tareas intensivas, como la carga de plugins complejos, temas personalizados o grandes volúmenes de datos.

Este tipo de cambios no afectan a los datos de tu sitio web, por lo que si los aplicas erróneamente, lo máximo que puede suceder es que no funcionen o que el sitio quede inaccesible, pero la información de tu web no se verá en ningún momento afectado.

Simplemente deshaciendo el cambio de asignación de memoria, la web debería volver a la normalidad. Llegando a este punto es bueno consultar, si procede, con tu servicio de Soporte, si el cambio que quieres aplicar será efectivo y si está permitido el nuevo límite de memoria que quieres establecer.

No todos los problemas de falta de memoria en WordPress son causados por la cantidad asignada en tu cuenta de Hosting, a nivel servidor, en ocasiones hay plugins como All In One WP Migration que limitan “comercialmente” el que se puedan restaurar backups superiores a 512 MB de tamaño con la versión “gratuita” del mismo.

Esta limitación no tiene ninguna relación directa con la memoria de PHP, sino con el tamaño (expresado en megabytes) del archivo WPRESS a restaurar con el plugin citado, algo que muchos usuarios achacan al servidor cuando la causa es la limitación aplicada por el desarrollador al plugin.

Analiza bien los plugins que utilizas, no vaya a ser que los problemas de exceso de consumo de memoria vengan derivados del uso de estos.

¿Te ha resultado útil este artículo?

Promo abril