La actualización en tiempo real de temas se congela bajo alta actividad

Ayer implementamos una importante mejora de rendimiento para sitios con publicaciones activas y muchos usuarios; debería ayudar mucho en tu sitio.

Muy bien, lo revisaremos y posiblemente lo probemos.

Bueno, cada juego es un caso individual. En la situación actual de COVID (arena vacía) y con un calendario de partidos casi aleatorio, el comportamiento del público es imposible de predecir o comparar con datos históricos.

Basándome en este único juego, no puedo afirmar que este cambio nos haya traído una mejora significativa.

El primer periodo fue tranquilo y normal, pero los eventos ocurridos durante el segundo provocaron un pico en los mensajes y un aumento de los observadores (lurkers). Aproximadamente el 60% de nuestros usuarios reportó experimentar congelamientos.

En la configuración de dos servidores, el servidor web_only es el único que reporta un alto uso de CPU y un promedio de carga elevado.

El modo carga extrema / solo lectura no se activó, lo cual es bueno, ya que es la experiencia de usuario más problemática. En general, el público ha aprendido rápidamente a visitar la página de índice y regresar para reanudar la discusión, lo que genera más carga en el servidor. Si tan solo el usuario final pudiera ser informado de alguna manera de que está siendo limitado, es más probable que realmente espere un minuto.

Informe de progreso de las conversaciones privadas: la experiencia mejoró al establecer DISCOURSE_REJECT_MESSAGE_BUS_QUEUE_SECONDS en 4, y estamos planeando algunos cambios principales para mejorar el comportamiento de limitación de velocidad del bus de mensajes.

Dado que experimentamos ciertas similitudes con la situación de @ljpp, aunque en una escala significativamente menor (casi exclusivamente en unos 5 minutos alrededor del momento en que terminan los partidos), me gustaría saber si hay algún ajuste que se pueda hacer en el umbral donde se activa el mensaje de alta carga y los usuarios comienzan a ser “expulsados” del tema… porque siempre ocurre en un solo tema, el del partido.

Además de eso, el mensaje de error 502 (mensaje puramente de nginx) que experimentamos con aún menos frecuencia en el mismo contexto. Sospecho que probablemente haya algunas configuraciones en nginx que podrían beneficiarse de un ajuste, y sé que no es su trabajo, pero estoy abierto a cualquier sugerencia útil :laughing:.

Por favor, aclare: ¿está experimentando congelaciones (el tema no se actualiza con nuevos mensajes) o está recibiendo mensajes de error de carga extrema?

Hay ajustes en este hilo que ofrecen algunas mejoras para las congelaciones, pero también aumentan la carga del sistema, por lo que es más probable que se produzcan escenarios de carga extrema.

En esas situaciones que he reportado, a veces experimentamos que los temas se congelan, pero cuando eso ocurre, el sistema también muestra advertencias de carga extrema. Así que no puedo decirte qué es qué.

No nos importa la carga extrema mientras no expulse a los usuarios de los temas ni interrumpa la actualización de nuevas publicaciones. De hecho, en ese caso, preferiríamos que la carga fuera lenta (la rueda podría girar durante 15 segundos para que cada usuario pueda leer o publicar), ya que preferimos eso a que el tema se congele o a que el usuario sea expulsado.

Tengo que estar de acuerdo. La UX de carga extrema es confusa para el usuario final.

  • ¿Cuántos usuarios concurrentes tienes?
  • ¿Qué tipo de hardware?
  • ¿Enlace a las estadísticas de tu foro?

@sam

Ahora que estamos en la plataforma SaaS de CDCK, solo puedo observar esto desde el punto de vista de la UX.

Hemos tenido bastante actividad en los juegos durante las últimas semanas. Los “congelamientos” han desaparecido casi por completo con el cambio de plataforma, pero existe esta fluctuación en la forma en que se actualiza el tema, lo cual aún puede confundir a algunos. Sin embargo, la audiencia ha dejado de quejarse en su mayoría (90%) y se está centrando en los juegos, lo cual es una buena señal.

Sin embargo, hay un escenario que puedo reproducir con bastante confianza (nuevamente, 90%). La plataforma tiene problemas ocasionales al reanudar la sesión cuando el tema del juego está en una pestaña en segundo plano (Android) o bajo una pantalla bloqueada. Cuando regreso al tema activo, generalmente debido a un evento interesante en el juego, la vista del tema no se actualiza en ocasiones. Puedo ver los avatares de los usuarios parpadeando en la parte inferior del tema, pero no aparecen nuevos mensajes. Es necesario recargar el navegador para recuperarse completamente.

El patrón de reproducción no es el más sencillo, ya que se necesita:

  • Un tema activo
  • Algo de acción interesante en el juego → más actividad en el tema
  • Mantener el tema bajo una pantalla bloqueada o en una pestaña del navegador en segundo plano.

Nosotros también sufrimos eso.

Otra cosa es que, al saltar a la primera publicación no leída, puede repetir este comportamiento varias veces (ir a la misma “publicación no leída” varias veces, aunque la posición de la primera publicación no leída debería haber cambiado en cada ocasión).

Para ejemplificar:

  1. Salto a la primera publicación no leída
  2. Desplazo y leo las 100 publicaciones no leídas
  3. Luego voy a otro tema o a la página de inicio…
  4. Después de un minuto o así, hay como 30 nuevas publicaciones no leídas, pero cuando hago clic en el icono, me lanzo nuevamente a la posición del paso 1 (es decir, 130 publicaciones hacia atrás y no solo las 30 nuevas no leídas).

Pero, una vez más, esto solo ocurre en temas muy, muy activos durante unos minutos en el pico máximo de actualización y publicación de todos los usuarios en el mismo tema al mismo tiempo. Es un poco molesto, pero hasta ahora no es un problema insuperable.

Consideraría eso un éxito.

¿Podrías proporcionar una reproducción aquí en meta? Probablemente no, ya que requiere un gran número de usuarios activos inactivos en el mismo tema al mismo tiempo.

Mi pensamiento actual es que deberíamos construir una función de chat en vivo e instanciarla justo a tiempo, cuando tengas…

  • muchos usuarios

  • en el mismo tema

  • al mismo tiempo

  • entonces, y solo entonces, instanciar una superposición de cuadro de chat en vivo e impulsar fuertemente a los usuarios a usar eso en lugar de respuestas, tal vez incluso deshabilitar la capacidad de responder al tema con

    :loudspeaker: ¡Hola! Parece que lo que realmente querías era una sala de chat… aquí está, ¡diviértete! :speech_balloon:

Sí, te entiendo, pero está tan limitado a esas ocasiones que supongo que no vale la pena el esfuerzo. Suelen haber partidos así de una a dos veces por semana y ocurren principalmente en el periodo de 5 minutos justo después de que termine el partido. Pero de hecho lo he pensado varias veces (sería genial tener una función de sala de chat temporal o un cambio a ese periodo de 90 minutos de un partido de fútbol). :laughing:

Aun así, intentaré reproducirlo algún día grabando la pantalla durante un rato.

Nuestra instancia ha estado mostrando algunos errores 429 desde que comenzaron los partidos de playoffs. @staff debería poder ver algunos en los últimos 3,5 horas de nuestros registros, y se esperan más cuando se anote el gol decisivo (el partido va a la segunda prórroga mientras escribo esto).

En cualquier caso, si aún están registrando y rastreando esto, quedan pocas oportunidades, ya que las finales y la siguiente temporada baja se están acercando.

Solo quería añadir mi nombre a este hilo para poder seguirlo. Somos un nuevo foro de gimnasia. Ayer, durante las Pruebas Olímpicas de EE. UU., experimentamos lo anterior junto con “congelamientos”. Aquí está el hilo…

https://gymnaverse.com/t/us-wag-olympic-trials-night-2-live-discussion/1092

Ayer tuvimos cuatro “unicorns”.

Redimensioné el servidor a 4 vCPUs Intel y 8 GB de memoria en Digital Ocean y configuré lo siguiente…

unicorn_workers: 8
db_shared_buffers: “2GB”

Esperamos un tráfico mucho mayor durante los Juegos Olímpicos. ¿Qué más podemos hacer para optimizar el servidor para un tráfico “tipo chat” durante la competición?

Si tienes cientos de usuarios en un solo tema usando Discourse como chat y es un evento de tiempo limitado, te sugiero aumentar temporalmente un poco más el servidor.

La instancia Premium AMD más grande de Digital Ocean durante los 16 días de los Juegos Olímpicos costó 54,85 USD, y debería ser más que suficiente para una comunidad de tu tamaño.

No tengo estas líneas en mi app.yml. ¿Solo las agrego?

Sí. Añádelos en la sección env.

Si esto sigue en la atención del personal, nuestro lanzamiento será esta noche a las 18:30 (UTC+3) y nuevamente mañana a la misma hora.

Hay mucha expectación después de dos temporadas arruinadas por la COVID, así que espero picos de tráfico elevados en tappara.co.

@ljpp
¿Cuál es tu situación actual? ¿Redis 6 te ha ayudado?

Ahora estamos en CDCK SaaS, por eso avisamos al personal. Somos una especie de banco de pruebas para este asunto.