Aggiornamento in tempo reale degli argomenti si blocca sotto alta attività

I giochi sono stati scarsi (grazie al COVID), quindi abbiamo avuto pochissime opportunità di misurare e sperimentare con questo.

Abbiamo scoperto che, anche con le nostre risorse hardware migliorate (6+4 vCore e 16+8 GB di RAM), anche una folla moderatamente attiva è riuscita a generare errori 429 sui client. Abbiamo osservato questo durante le partite della U20 WC, che hanno attirato circa il 50% del nostro pubblico abituale per le chat.

Dopo aver misurato, provato e sbagliato, abbiamo stabilito le seguenti ottimizzazioni:

  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

Questo sembra eliminare l’80% degli errori 429, consentendo un’esperienza relativamente fluida per la maggior parte degli utenti.

Il prossimo passo sarebbe stato acquistare risorse hardware di tipo diverso, utilizzando server dedicati per la velocità single-thread o passando a un provider VPS che offra piani con migliaia di vCore. Per noi, tuttavia, il prossimo passo è lavorare con il team di hosting di Discourse, come ha accennato in precedenza @sam.

Speriamo che queste ottimizzazioni possano essere utili per @iceman, @alec o chiunque altro. Assicuratevi di monitorare l’utilizzo della CPU e le code. Inoltre, quanto ho imparato da questa esperienza è che 2 container sono di gran lunga migliori di uno: le ottimizzazioni possono essere applicate con tempi di inattività quasi nulli e le risorse hardware possono essere sfruttate in modo più granulare.

Sono ancora interessato a eventuali nuove ottimizzazioni o scoperte che possano contribuire a migliorare le prestazioni e l’esperienza utente per discussioni dinamiche guidate da eventi del mondo reale.