Saltar al contenido Saltar a la barra lateral

Este es el foro de soporte técnico de WPML, el plugin multilingüe de WordPress.

Todas las personas pueden leerlo pero solo los clientes de WPML pueden ingresar comentarios. El equipo de WPML responde en los foros 6 días a la semana, 22 horas por día.

Sun Mon Tue Wed Thu Fri Sat
- 8:00 – 14:00 8:00 – 14:00 8:00 – 14:00 8:00 – 14:00 8:00 – 14:00 -
- 15:00 – 17:00 15:00 – 17:00 15:00 – 17:00 15:00 – 17:00 15:00 – 17:00 -

Zona horaria del soporte: Europe/Madrid (GMT+02:00)

Etiquetado: 

Este tema contiene 5 respuestas, tiene 0 voces.

Última actualización por Paola Mendiburu hace 1 día, 2 horas.

Asistido por: Paola Mendiburu.

Autor Publicaciones
Abril 27, 2026 a las 08:08 #17996040

miguelG-38

Estamos evaluando la viabilidad técnica de WPML para un despliegue a gran escala en una red de sitios. Actualmente, en una web de prueba con 500+ posts y 43 idiomas, hemos detectado que un solo hilo de PHP llega a agotar 1GB de RAM, lanzando un Fatal Error en class-wpml-wp-cache.php en la línea 57.

PHP Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 2097160 bytes) in /media/cultura10.com/website/wp-content/plugins/sitepress-multilingual-cms/classes/utilities/class-wpml-wp-cache.php on line 57

Lo hemos solucionado subiendo a 2GB pero es algo que con el volumen de webs que manejamos es inviable sin subir los costes de hosting.

Nuestra hoja de ruta incluye el despliegue en sitios que alcanzan los 10.000 - 20.000 posts base, lo que resultará en una base de datos enorme tras la traducción. Necesitamos entender la relación directa entre el consumo de memoria de WPML y el volumen de datos.

Nuestras consultas específicas son:

Dependencia del consumo: ¿El consumo de memoria en class-wpml-wp-cache.php está ligado de forma lineal al número de idiomas configurados y al volumen total de posts/strings? ¿O existe alguna forma de configurar WPML para que funcione mediante carga bajo demanda (lazy loading) en lugar de poblar cachés internos tan pesados?

Opciones de optimización: ¿Qué funcionalidades específicas de WPML (como el ajuste de IDs multilingües o el escaneo de cadenas) impactan más en el uso de memoria de PHP y cuáles recomiendan desactivar para entornos de alta densidad de datos?

Beneficio de Redis: Planeamos implementar Redis (Object Cache). ¿De qué manera específica ayuda Redis a reducir la carga de memoria en el proceso de PHP para las clases de WPML? ¿WPML delega automáticamente su sistema de caché interno a Redis si detecta un Object Cache activo?

Escalabilidad: Con una proyección de 43 idiomas y 100k posts, ¿es posible mantener el consumo de memoria por debajo de umbrales razonables (ej. 256MB-512MB) mediante configuración, o es una limitación inherente a la arquitectura actual del plugin al gestionar tal volumen de idiomas?

Necesitamos confirmar si existe una estrategia de configuración para minimizar la huella de memoria (footprint) antes de proceder con el resto de la red de sitios.

Un saludo.

Abril 27, 2026 a las 12:29 #17996884

Paola Mendiburu
Partidario de WPML desde 11/2020

Idiomas: Inglés (English ) Español (Español ) Italiano (Italiano )

Zona horaria: Europe/Madrid (GMT+02:00)

Hola!

Soy Paola y seguiré con el ticket.

Para poder escalar el problema al segundo nivel, Me gustaría solicitar acceso temporal(wp-admin y FTP) al sitio donde le aparece el error para analizar mejor el problema. Encontrará los campos necesarios para esto debajo del área de comentarios cuando inicie sesión para dejar su próxima respuesta. La información que ingresarás es privada, lo que significa que solo tú y yo podemos verla y tener acceso a ella.

Política de privacidad y seguridad

Tenemos políticas estrictas con respecto a la privacidad y el acceso a su información. Por favor mira:
https://wpml.org/purchase/support-policy/privacy-and-security-when-providing-debug-information-for-support/

**IMPORTANTE**

- Haga una copia de seguridad de los archivos y la base de datos del sitio antes de brindarnos acceso.

- Si no ve los campos wp-admin/FTP, esto significa que los datos de inicio de sesión de su publicación y sitio web se harán PÚBLICOS. NO publique los detalles de su sitio web a menos que vea los campos obligatorios de wp-admin/FTP. Si no es así, pídame que habilite el cuadro privado.

El cuadro privado tiene este aspecto: enlace oculto

Abril 28, 2026 a las 14:13 #18000106

Paola Mendiburu
Partidario de WPML desde 11/2020

Idiomas: Inglés (English ) Español (Español ) Italiano (Italiano )

Zona horaria: Europe/Madrid (GMT+02:00)

Dime como puedo reproducir el fatal error.

También puede ser que se de por algún tipo de conflicto con plugin.

Con esta información lo podré escalar al segundo nivel.

Abril 29, 2026 a las 08:00 #18001770

miguelG-38

Hola Paola,

Reproducir el problema ha sido dificil, porque sólo lo veíamos en debug.log de WordPress pero no sabíamos de donde venía, pero si deseas verificarlo, solo visita:
enlace oculto
Y luego abres debug.log en el ftp (pesará muchisimo) y veras fatal error junto con el log custom que hemos añadido a WPML.

Analizando el stack trace del error, hemos identificado que el problema no es un conflicto genérico, sino un desbordamiento de memoria provocado específicamente por el addon WPML SEO (la extensión de compatibilidad para Yoast SEO) cuando se generan los sitemaps.

Para diagnosticarlo, hemos modificado el método set en sitepress-multilingual-cms/classes/utilities/class-wpml-wp-cache.php para monitorizar el crecimiento de la caché interna en tiempo real. Este es el código que hemos utilizado para capturar la traza:

public function set( $key, $data, $expire = 0 ) {
$keys = $this->get_keys();
if ( ! in_array( $key, $keys, true ) ) {
$key_log = is_scalar( $key ) ? (string) $key : wp_json_encode( $key );
$group_log = is_scalar( $this->group ) ? (string) $this->group : wp_json_encode( $this->group );
$trace = function_exists( 'wp_debug_backtrace_summary' )
? wp_debug_backtrace_summary( null, 0, false )
: '';

if ( ! is_string( $trace ) ) {
$trace = wp_json_encode( $trace );
}

error_log( sprintf(
'WPML cache grow group=%s count=%d key=%s trace=%s',
$group_log,
count( $keys ),
$key_log,
$trace
) );
$keys[] = $key;
wp_cache_set( self::KEYS, $keys, $this->group );
}
return wp_cache_set( $key, [ 'data' => $data ], $this->group, $expire );
}

Resultados del Log custom que hemos añadido:
Al intentar cargar el sitemap, el grupo de caché convert_url crece de forma masiva. Justo antes de alcanzar el límite de 1GB de RAM, el log registra lo siguiente:

WPML cache grow group=convert_url count=72213 key=d632ebd9dd4ce884d03e9dcc3e2e7e93 trace=["WPML_WP_Cache->set","WPML_URL_Cached_Converter->convert_url","WPML_URL_Filters->home_url_filter","WP_Hook->apply_filters","apply_filters('home_url')","get_home_url","home_url","get_permalink","WPML\\WPSEO\\Shared\\Sitemap\\BaseAlternateLangHooks->WPML\\WPSEO\\Shared\\Sitemap\\{closure}","array_map","WPML\\Collect\\Support\\Collection->map","WPML\\WPSEO\\Shared\\Sitemap\\BaseAlternateLangHooks->addAlternateLangData","WP_Hook->apply_filters","apply_filters('wpseo_sitemap_entry')","WPSEO_Post_Type_Sitemap_Provider->get_sitemap_links","WPSEO_Sitemaps->build_sitemap"]

Nuestra conclusión:
La traza indica que la función addAlternateLangData de WPML SEO entra en un bucle para procesar los 43 idiomas de cada entrada del sitemap. Esto provoca que WPML_URL_Cached_Converter intente almacenar decenas de miles de URLs en el array global de caché de PHP en una sola ejecución, disparando el Fatal Error.

Consultas para el equipo de Nivel 2:

¿Cómo podemos limitar el crecimiento del grupo convert_url en procesos pesados como la generación de sitemaps?

Dado que tenemos 43 idiomas, ¿existe alguna forma de evitar que WPML SEO intente procesar todos los alternate lang de golpe en memoria?

¿Tenéis constancia de este comportamiento de "memory leak" por acumulación de caché en el addon WPML SEO al escalar a este número de idiomas?

Quedo a la espera de vuestro análisis para ver cómo proceder sin tener que asignar cantidades irreales de RAM (2GB+) por cada hilo de PHP.

Un saludo.

2026-04-29_09-34-11.jpg
Abril 29, 2026 a las 09:40 #18002197

miguelG-38

Hola, ahora mismo hemos desactivado el sitemap en Yoast y hemos comentado las lineas del log para que debug.log no crezca tanto.

Si necesitais verlo descomentad las lineas de logging y repetir los pasos.

Si necesitais cualquier cosa nos decís sin ningún problema.

Un saludo.

2026-04-29_11-37-04.jpg
Abril 30, 2026 a las 17:26 #18006634

Paola Mendiburu
Partidario de WPML desde 11/2020

Idiomas: Inglés (English ) Español (Español ) Italiano (Italiano )

Zona horaria: Europe/Madrid (GMT+02:00)

He escalado el problema al segundo nivel.

Te aviso en cuanto tenga noticias.