当发送的消息过多时,具有实时消息传递的 Web 应用程序会挂起

Web app with real-time messaging hangs when too many messages are being sent

我正在练习使用 django 频道和 nginx 的群聊应用程序。问题是,如果我进行压力测试,比如 300 个用户将在 2 分钟内发送 2-4 秒的消息。包含我们的网络应用程序的选项卡将挂起。我怎样才能防止这种情况发生? nginx 的 gzip 有帮助吗?

据我了解,您在 2 分钟内每秒发送大约 100 条消息。

此处可能导致 CPU 过载的主要两件事是:

  • 网络流量非常大
  • 呈现所有这些消息的重 JavaScript 代码

所以你需要检查他们两个

例如,您可以从检查 JavaScript 部分开始。尝试禁用显示 UI 中所有传入消息的代码,因此只有网络部分将处于活动状态。看看它怎么运作。如果现在运行良好,那么您需要优化此 JavaScript 部分,可能会在内存中收集传入消息并每 3 秒而不是每 100/1 秒显示 UI 中的消息。这将节省您的渲染能力。

关于网络部分 - 您可以尝试优化消息负载 - 使其更小。