blog webempresa

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

por | Oct 1, 2022 | Errores en WordPress

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

No es habitual, principalmente en Hosting bien optimizados para trabajar con WordPress el que se presenten problemas de límite de memoria PHP en WordPress cuando se están ejecutando procesos, normalmente desencadenados por la ejecución de plugins en la mayoría de casos.

Si se puede dar el caso de migrar de WordPress.com a WordPress.org (a un Hosting propio self-hosted o autoalojado) y en el proceso de importación de post, entradas, paginas y demás elementos permitidos por WordPress.com, mediante el correspondiente archivo .xml te encuentres con errores de límite de memoria PHP en WordPress, 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, aumentar el límite de memoria PHP en WordPress puede hacerse de forma sencilla, dentro de los límites establecidos en el archivo php.ini del lado del servidor, de tu cuenta de Hosting WordPress.

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 seria 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 XXXX bytes agotado”, en inglés:

     “Allowed memory size of xxxxxx bytes exhausted”.

Pero antes de continuar, vamos a ver algunos puntos importantes para situarnos 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 en WordPress

 

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 seria:

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 si 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 script 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 base al producto que tengas contratado.

  Por qué sucede Allowed Memory Size Exhausted en WordPress

 

El servidor con el fin de evitar quedarse sin recursos se configura con el fin de 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 XX bytes agotado”.

En ingles (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 otras cuentas 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 causantes 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 y cómo cambiar la versión de PHP en WordPress.

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

 

En WordPress desde la versión 2.5 se incorporó esta posibilidad, pudiendo aumentar el valor mínimo de memoria PHP por defecto aplicado por el servidor para tu cuenta, añadiendo en el archivo wp-config.php de la instalación afectada la siguiente linea:

define( 'WP_MEMORY_LIMIT', '128M' );
     Este ajuste aumenta la memoria sólo para WordPress, no otras aplicaciones. Por defecto, WordPress intentará aumentar la memoria asignada de 40MB en PHP (el código está al principio del archivo /wp-includes/default-constants.php) para un solo sitio y 64MB para varios sitios, por lo que el define añadido en 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 seria 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 8MB 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 de 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 PHP de WordPress, 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 32MB y 40MB, así “de facto” 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.

Sino 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.

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 Server IP & Memory Usage Display que te muestran información sobre la memoria asignada y el porcentage de memoria consumida en tiempo real.

Plugin Server IP & Memory Usage Display

Haz clic en la imagen para acceder al plugin en WordPress.org

Este plugin es sencillisimo de usar, lo instalas, activas y listo “no tiene configuraciones”.

En el pie de página (footer) del dashboard de tu instalación de WordPress verás directamente pintados los valores de memoria asignada, usada, el límite establecido así como la versión de PHP en ejecución en esa instalación de WordPress.

valores de memoria asignada, usada, límite establecido

Con esta información, que varía de forma dinámica en base a 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

 

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 afectada.

Simplemente deshaciendo el cambio de asignación de memoria, la web debería volver a la normalidad. Llegados 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 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 512MB de tamaño con la versión “gratuita” del mismo, 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 derivado del uso de estos.

¿Te ha resultado útil este artículo?

Banner 70 descuento Marzo