实时更新主题在高活动下冻结

由于疫情(COVID)的影响,游戏赛事一直稀少,因此我们几乎没有机会对此进行测量和调试。

我们发现,即使我们升级了硬件资源(6+4 个虚拟核心和 16+8GB 内存),即便是适度活跃的用户群也能引发 429 错误(请求过多)。我们在 U20 世界杯赛事中观察到了这一现象,当时聊天室吸引了约 50% 的常规游戏观众。

经过测量、试验和反复调整,我们确定了以下优化参数:

  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

这些调整似乎消除了 80% 的 429 错误,从而为大多数用户提供了相对流畅的体验。

下一步本应是采购不同类型的硬件资源,例如使用专为单线程速度优化的独立服务器,或切换到提供拥有海量虚拟核心计划的 VPS 提供商。但对我们而言,下一步是与 Discourse 托管团队合作,正如 @sam 之前所提示的那样。

希望这些优化对 @iceman@alec 或其他任何人有所帮助。请务必密切关注 CPU 使用率和队列情况。此外,我从这次实践中还学到:使用 2 个容器远远优于 1 个——优化可以近乎零停机时间实施,且硬件资源能更细粒度地利用。

我仍然欢迎任何新的优化方案或发现,以帮助提升由现实世界事件驱动的快节奏讨论的性能和用户体验。