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

Los partidos han sido escasos (gracias a la COVID), por lo que hemos tenido muy pocas oportunidades para medir y experimentar con esto.

Lo que descubrimos es que, incluso con nuestros recursos de hardware mejorados (6+4 vCores y 16+8 GB de RAM), una audiencia moderadamente activa puede generar 429 errores de congelación en el cliente. Vimos esto en los partidos de la U20 WC, que atrajeron aproximadamente el 50 % de nuestra audiencia habitual de juegos para los chats.

Tras medir, probar y cometer errores, hemos optado por los siguientes ajustes:

  DISCOURSE_REJECT_MESSAGE_BUS_QUEUE_SECONDS: 0.4
  DISCOURSE_MAX_REQS_PER_IP_PER_MINUTE: 400
  DISCOURSE_MAX_REQS_PER_IP_PER_10_SECONDS: 100

Esto parece eliminar el 80 % de los errores 429, lo que permite una experiencia relativamente fluida para la mayoría de los usuarios.

El siguiente paso habría sido adquirir otro tipo de recursos de hardware, ya sea utilizando servidores dedicados para velocidad de un solo hilo o cambiando a un proveedor de VPS que ofrezca planes con una cantidad enorme de vCores. Sin embargo, para nosotros, el siguiente paso es trabajar con el equipo de alojamiento de Discourse, como sugirió @sam antes.

Esperamos que estos ajustes sean útiles para @iceman, @alec o cualquier otra persona. Asegúrate de vigilar el uso de la CPU y la cola de procesamiento. Además, lo que aprendí de esta experiencia es que dos contenedores son mucho mejores que uno: los ajustes se pueden aplicar con un tiempo de inactividad casi nulo y los recursos de hardware se aprovechan de manera más granular.

Sigo interesado en cualquier nuevo ajuste o hallazgo que pueda ayudar a mejorar el rendimiento y la experiencia de usuario en discusiones rápidas impulsadas por eventos del mundo real.