首页 > 解决方案 > 当发送的消息过多时,具有实时消息传递功能的 Web 应用程序会挂起

问题描述

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

标签: nginxwebsocketreal-timedjango-channels

解决方案


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

这里可能导致 CPU 过载的主要两件事是:

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

所以你需要检查他们两个

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

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


推荐阅读