Carga de comentarios con ajax habilitado genera miles de solicitudes de visitantes post_id=undefined

Entorno: Discourse autoalojado en AWS EC2, con la AMI de Ubuntu 24.04. El host es un r7g.large con 2 vCPUs y 16 GB de RAM. Discourse está en la versión 3.6.0.beta1-dev (db974047e4) y se actualiza regularmente. WordPress está en la versión 6.8.2, y el plugin wp-discourse está en la versión 2.5.9. Tanto Wordpress como Discourse están proxificados (“nube naranja”) detrás de Cloudflare.

Configuración actual de wp-discourse: Estoy mostrando comentarios de Discourse para todos los temas, y tengo marcada la opción “Cargar comentarios con Ajax”. (Tanto los lectores como los propietarios del sitio de Wordpress desean que los nuevos comentarios se muestren lo antes posible debajo de las publicaciones de WP, por lo que según los requisitos de los propietarios, preferiría dejar habilitada la opción “Cargar comentarios con Ajax”).

Lo que estoy viendo: En general, wp-discourse funciona muy bien. Cuando un lector visita una publicación de WP, su navegador solicita /wp-json/wp-discourse/v1/discourse-comments?post_id=XXXXX, donde XXXXX es el ID de publicación esperado, y los comentarios se cargan sin problemas. Los nuevos comentarios aparecen en el lado de Wordpress a los pocos segundos de ser publicados en Discourse.

Sin embargo, los navegadores de los visitantes también emiten una llamada a la misma URI discourse-comments cuando visitan cualquier dirección de wordpress en todo el sitio. La página de inicio del sitio, los archivos de comentarios, la página “acerca de”, la página de contacto, las páginas de biografía de autor, las páginas estáticas, las páginas de búsqueda, todo. Todas estas solicitudes son para /wp-json/wp-discourse/v1/discourse-comments?post_id=undefined, y estoy recibiendo ~20,000 de ellas en un período de 24 horas (correspondiente aproximadamente a mi número total de páginas servidas).

No me importaría mucho, excepto que atender tantas solicitudes adicionales está creando una carga notable en mi servidor de origen de WP. Es manejable ahora, pero este sitio es un sitio de pronóstico meteorológico de la costa del Golfo y durante eventos climáticos (especialmente huracanes) nuestro recuento de vistas diarias puede aumentar de las ~20k normales a entre 1.5 y 2 millones, y manejar millones de solicitudes de post_id=undefined en un día sería un desafío.

Lo único que he podido encontrar aquí en meta que parece tener algo que ver con este problema es este hilo de 2019, donde la respuesta dada es “desactivar la carga de comentarios con ajax”. Como se mencionó anteriormente, dadas las requisitos bajo los que opero, preferiría no hacer eso.

Aquí hay una solicitud representativa de undefined. Esta se generó cuando accedí a la página de inicio del sitio:

Solución provisional: Dado que estas solicitudes no parecen estar haciendo nada, he implementado una regla WAF de Cloudflare para responder a ellas a nivel de CF con un cuerpo de respuesta vacío. Esto ha eliminado por completo los efectos del comportamiento problemático: ya no veo las solicitudes de undefined en mi origen y no estoy desperdiciando CPU generando respuestas.

Pregunta: ¿Es el envío de solicitudes ajax de discourse-comments?post_id=undefined para cada página de WP el comportamiento previsto del plugin wp-discourse? Parece que podría ser un poco más seguro (o al menos un poco más determinista) enviar esas solicitudes solo cuando se carga realmente una publicación de WP (o una página, también, si las páginas están habilitadas en las opciones de wp-discourse).

Como dije, tengo una solución provisional implementada que parece estar funcionando y eliminando la carga adicional de manejar esas decenas de miles de solicitudes espurias, así que estoy estable y en un buen lugar. Pero sería bueno saber si el comportamiento que estoy viendo es intencional.

1 me gusta

Hola @Lee_Ars, gracias por informarnos. Esto es, en efecto, un problema. Estoy trabajando en una solución e intentaré lanzar una nueva versión del plugin antes del final de la semana.

4 Me gusta

¿Se ha resuelto esto ahora?

Negativo, sigo viendo el comportamiento problemático. No creo que se haya implementado una solución todavía.

La próxima versión 2.6.0 incluye una corrección para esto. ¡Está programada para lanzarse muy pronto!

2 Me gusta

¡Tengo instalada la versión 2.6.0 y estoy viendo una reducción casi total del comportamiento problemático! He pasado de 32,98 mil solicitudes en 24 horas (según la captura de pantalla anterior) a menos de mil:

¡Parece resuelto para mí!

2 Me gusta