Mise à jour en temps réel des sujets bloquée en cas de forte activité

Les matchs ont été rares (grâce au COVID), nous avons donc eu très peu d’occasions de mesurer et d’expérimenter avec cela.

Nous avons découvert que, même avec nos ressources matérielles améliorées (6+4 cœurs vCores et 16+8 Go de RAM), une foule modérément active est capable de générer des erreurs 429 « client freezes ». Nous avons observé cela lors des matchs de la Coupe du Monde U20, qui ont attiré environ 50 % de notre audience habituelle pour les discussions.

Après avoir mesuré, testé et fait des essais et erreurs, nous avons opté pour les ajustements suivants :

  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

Cela semble éliminer 80 % des erreurs 429, permettant ainsi une expérience relativement fluide pour la majorité des utilisateurs.

La prochaine étape aurait été d’acquérir différents types de ressources matérielles, soit en utilisant des serveurs dédiés pour la vitesse monothread, soit en passant à un fournisseur de VPS proposant des offres avec des milliers de vCores. Pour nous, cependant, la prochaine étape est de collaborer avec l’équipe d’hébergement Discourse, comme l’a suggéré @sam plus tôt.

Espérons que ces ajustements seront utiles à @iceman, @alec ou à toute autre personne. Veillez à surveiller l’utilisation du CPU et les files d’attente. De plus, ce que j’ai appris grâce à cet exercice, c’est que 2 conteneurs sont bien meilleurs qu’un seul : les ajustements peuvent être appliqués avec un temps d’arrêt quasi nul, et les ressources matérielles peuvent être exploitées de manière plus granulaire.

Je suis toujours intéressé par tout nouvel ajustement ou découverte qui pourrait aider à améliorer les performances et l’expérience utilisateur lors de discussions rapides animées par des événements réels.