Os jogos têm sido escassos (graças à COVID), então tivemos muito poucas oportunidades de medir e fazer ajustes nisso.
Descobrimos que, mesmo com nossos recursos de hardware aprimorados (6+4 vCores e 16+8 GB de RAM), até uma plateia moderadamente ativa consegue gerar 429 erros de congelamento no cliente. Vimos isso nos jogos da U20 WC, que atraíram cerca de ~50% do nosso público habitual de jogos para os chats.
Após medições, testes e erros, chegamos às seguintes configurações:
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
Isso parece eliminar 80% dos erros 429, permitindo uma experiência relativamente suave para a maioria dos usuários.
O próximo passo teria sido adquirir recursos de hardware diferentes, seja usando servidores dedicados para velocidade de thread única ou migrando para um provedor de VPS que ofereça planos com gazzillion vCores. No entanto, para nós, o próximo passo é trabalhar com a equipe de hospedagem do Discourse, como @sam sugeriu anteriormente.
Esperamos que esses ajustes sejam úteis para @iceman, @alec ou qualquer outra pessoa. Fique atento ao uso da CPU e às filas. Além disso, o que aprendi com essa experiência é que 2 containers são muito melhores do que um — os ajustes podem ser aplicados com tempo de inatividade quase nulo e os recursos de hardware podem ser explorados de forma mais granular.
Ainda estou interessado em quaisquer novos ajustes ou descobertas que possam ajudar a melhorar o desempenho e a experiência do usuário em discussões dinâmicas impulsionadas por eventos do mundo real.