google-chrome - 浏览器聊天应用程序冻结/减速
问题描述
我们的系统有 3 个组件代理端聊天应用程序、服务器和玩家聊天。代理和玩家通过 web-socket 连接连接到服务器。
我们为在浏览器上运行的代理制作了一个聊天应用程序。我们使用纯 javascript、html5、CSS 来构建这个应用程序。UI 有几个部分,例如,一个可以查看所有玩家的滚动框,一个包含代理正在与之交谈的玩家的选项卡框,一个用于向玩家发送文本的聊天框等。
当代理单击列表中的任何玩家时,玩家将移动到选项卡框,代理可以在其中与玩家聊天。
在任何给定时间点,大约有 500 到 700 名玩家从游戏网站在线连接,大约 20 名代理从代理聊天应用程序连接。并且代理最多可以同时容纳 32 名玩家。
代理登录到聊天应用程序后,会与服务器建立 web-socket 连接,所有通信都通过它进行。如:
- 在线接收所有玩家的列表
- 一名玩家下线
- 一位玩家上线
- 代理接机等
与服务器的所有通信都发生在单个 Web 套接字连接上。
现在问题来了,代理抱怨(通常当玩家比平时多一点)UI感觉很慢,滚动变慢,点击玩家超过10-15秒没有响应,所有动作变得很慢。在正常情况下,它非常顺利。
到目前为止我的调查:
- 我试图监控它的内存消耗,当代理聊天应用程序在浏览器上启动时,它大约需要 50MB,随着时间的推移,我看到它接近 1GB,那时事情变得非常缓慢。但是,当占用率也在 500MB 左右时,我看到它变得迟缓。
- 我检查了代理机器上的 RAM,大约是 32,与应用程序所需的内存相比,我觉得它已经足够了。
- 我正在调查为什么内存消耗如此之高,以及如何限制它。
- 我正在尝试使用“禁用缓存”检查运行应用程序以查看性能是否变得更好(仍在检查)。
- 我也尝试过在不发送消息的情况下反复挑选和丢弃玩家,但这几乎不会导致任何内存峰值。
有人可以帮助我解决这个问题吗?
解决方案
推荐阅读
- java - 使用其他 JAR 包编译 Java JAR 文件
- javascript - 提交按钮的表单验证
- c - 如何解决带有“未声明”参数的错误,和/或可能包含指针
- amp-html - 您可以使用 AMP for Email 将产品从电子邮件添加到愿望清单到购物车吗
- asp.net - .NET MVC 应用程序 - Azure Active Directory - 重定向到 LocalHost
- excel - 如何根据变量为真创建和格式化图表图例?
- freebsd - 升级到 12.0-RELEASE 后如何解决 zfs 挂载问题?
- javascript - SVG未链接到网页
- java - jmap 转储失败,文件太大
- python - 为什么我的分类器无法学习正类?