当发送的消息过多时,具有实时消息传递功能的 Web 应用程序会挂起
Posted
技术标签:
【中文标题】当发送的消息过多时,具有实时消息传递功能的 Web 应用程序会挂起【英文标题】:Web app with real-time messaging hangs when too many messages are being sent 【发布时间】:2018-08-08 05:25:46 【问题描述】:我正在使用 django 频道和 nginx 练习一个群聊应用程序。问题是如果我做一个压力测试,比如 300 个用户会在 2 分钟内在 2-4 秒之间发送消息。具有我们的网络应用程序的选项卡将挂起。我怎样才能防止这种情况? nginx 的 gzip 会有帮助吗?
【问题讨论】:
【参考方案1】:据我了解,您在 2 分钟内每秒发送大约 100 条消息。
这里可能导致 CPU 过载的主要两件事是:
非常密集的网络流量 呈现所有这些消息的大量 javascript 代码所以你需要检查他们两个
例如,您可以从检查 JavaScript 部分开始。尝试禁用在 UI 中显示所有传入消息的代码,以便只有网络部分处于活动状态。看看它怎么运作。如果它现在运行良好,那么您需要优化这个 JavaScript 部分,可能会在内存中收集传入消息并在 UI 中每 3 秒而不是每 100/1 秒显示消息。这将节省您的渲染能力。
关于网络部分 - 您可以尝试优化消息负载 - 使其更小。
【讨论】:
你是说我应该只限制默认看到的消息,比如 25 条?因此,如果有一条新消息,那么我将隐藏显示的最旧消息? 现在,我的意思是您应该尽量减少 UI 更改的频率。因为每 q 秒在 UI 中渲染 100 条消息过于频繁 @DeanChristianArmada 欢迎您,让我知道结果或您需要其他帮助 你是对的,所以我们只是将消息最小化到每秒 25 条。以上是关于当发送的消息过多时,具有实时消息传递功能的 Web 应用程序会挂起的主要内容,如果未能解决你的问题,请参考以下文章