我有一个提供聊天室的meteor.js 应用程序。突然,当切换房间时,聊天加载(50 条消息)异常缓慢。这 50 条消息花了好几秒钟,我可以看到它们一条一条地弹出。这是在我的本地计算机上,开发人员数据库中的条目很少。
现在,该问题在 Chrome 中不太明显,因此我怀疑这是客户端问题。但是,我不知道从哪里开始调试。我的模板被填充了很多次,每次都比上次多一些消息。
使用 Safari 分析器向我显示,具有 minimongo 函数深度调用树的 _.forEach 消耗了总 cpu 时间的 32%,其中(空闲)消耗了 35%,(程序)消耗了 16%。
我也在调查 Kadira。看起来它应该能够帮助我,但我唯一可以让它向我展示的是“房间”是最慢的立方体,为 12 毫秒。消息不存储在房间中,它们是一个单独的集合,每条消息都包含一个房间 ID。
我知道这是一个有点模糊的问题,但我想我只是想知道一般情况下 Meteor 应用程序性能分析的选项是什么。
最佳答案
最近我遇到了同样的问题,想要调试客户端消息和查询更新。我认为客户端没有官方工具。 但您可以在本地环境中进行如下调试。我用的是meteor 0.8.2版本。
您可以使用 minimongo 和 livedata Meteor 核心包跟踪客户端 minimongo 更新和 sockjs 消息传输。
Meteor 不允许更改核心包中的文件。因此,将这两个包文件夹从 Meteor Core 复制并粘贴到您的项目包文件夹中。
现在核心包将被您的本地包替换。您可以将 console.log 添加到执行时间较长的函数中。
根据我的发现,以下文件中会触发高堆。并且我已根据粘贴箱中的代码记录了点。
i. packages/livedata/livedata_connection.js : http://pastebin.com/zSxim0ij ii. packages/minimongo/minimongo.js : http://pastebin.com/FaP0Sfqs iii packages/livedata/sockjs-0.3.4.js : http://pastebin.com/kiWn0Ybx
如果您使用相同的meteor版本,您可以简单地将文件替换为pastebin内容。
要监控从客户端到外部的 ddp msg 事务,您可以使用这个不错的工具。 https://github.com/arunoda/meteor-ddp-analyzer
我猜 kadira 正在致力于创建一个客户端监控工具。希望届时问题能够得到解决。
关于javascript - 如何分析meteorjs 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24288211/