nginx - 当发送的消息过多时,具有实时消息传递功能的 Web 应用程序会挂起
问题描述
我正在使用 django 频道和 nginx 练习一个群聊应用程序。问题是,如果我进行压力测试,比如 300 个用户会在 2 分钟内在 2-4 秒之间发送消息。具有我们的网络应用程序的选项卡将挂起。我怎样才能防止这种情况?nginx的gzip有帮助吗?
解决方案
因此,据我了解,您在 2 分钟内每秒发送大约 100 条消息。
这里可能导致 CPU 过载的主要两件事是:
- 非常密集的网络流量
- 呈现所有这些消息的大量 JavaScript 代码
所以你需要检查他们两个
例如,您可以从检查 JavaScript 部分开始。尝试禁用在 UI 中显示所有传入消息的代码,以便只有网络部分处于活动状态。看看它怎么运作。如果它现在运行良好,那么您需要优化这个 JavaScript 部分,可能会在内存中收集传入消息并在 UI 中每 3 秒而不是每 100/1 秒显示消息。这将节省您的渲染能力。
关于网络部分 - 您可以尝试优化消息有效负载 - 使其更小。
推荐阅读
- html - 如何让 2 个 html 元素彼此相邻?
- c# - 字段初始值设定项不能引用 EventHandler 中的非静态字段、方法或属性
- javascript - 调用时在 async/await 函数的 catch 方法中未处理错误?
- java - 没有足够的空间供 BuildTools 运行 - Java - Minecraft 插件测试服务器
- flutter - 如何在 Flutter Web App(移动端和桌面端)中提示“保存在主屏幕”
- jquery - 使用codeigniter3,jquery和Ajax提交表单后如何保留相关的下拉选择值
- javascript - 如何通过 JavaScript 在链表中插入元素
- discord.py - Discord.py 将使用我的机器人的用户列入黑名单
- python - 为什么我的浏览器一直重定向到索引而不是视图?
- reactjs - 仅当用户停止输入和/或用户单击输入键时如何从 api 获取数据