javascript - 如何分析meteorjs 性能

标签 javascript meteor profiling

我有一个提供聊天室的meteor.js 应用程序。突然,当切换房间时,聊天加载(50 条消息)异常缓慢。这 50 条消息花了好几秒钟,我可以看到它们一条一条地弹出。这是在我的本地计算机上,开发人员数据库中的条目很少。

现在,该问题在 Chrome 中不太明显,因此我怀疑这是客户端问题。但是,我不知道从哪里开始调试。我的模板被填充了很多次,每次都比上次多一些消息。

使用 Safari 分析器向我显示,具有 minimongo 函数深度调用树的 _.forEach 消耗了总 cpu 时间的 32%,其中(空闲)消耗了 35%,(程序)消耗了 16%。

我也在调查 Kadira。看起来它应该能够帮助我,但我唯一可以让它向我展示的是“房间”是最慢的立方体,为 12 毫秒。消息不存储在房间中,它们是一个单独的集合,每条消息都包含一个房间 ID。

我知道这是一个有点模糊的问题,但我想我只是想知道一般情况下 Meteor 应用程序性能分析的选项是什么。

最佳答案

最近我遇到了同样的问题,想要调试客户端消息和查询更新。我认为客户端没有官方工具。 但您可以在本地环境中进行如下调试。我用的是meteor 0.8.2版本。

  1. 您可以使用 minimongo 和 livedata Meteor 核心包跟踪客户端 minimongo 更新和 sockjs 消息传输。

  2. Meteor 不允许更改核心包中的文件。因此,将这两个包文件夹从 Meteor Core 复制并粘贴到您的项目包文件夹中。

  3. 现在核心包将​​被您的本地包替换。您可以将 console.log 添加到执行时间较长的函数中。

  4. 根据我的发现,以下文件中会触发高堆。并且我已根据粘贴箱中的代码记录了点。

     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/

相关文章:

R:避免summary.plm

meteor 向上听tcp 0.0.0.0 :80: bind: address already in use

meteor - 有没有办法阻止 loadingTemplate 出现在 "fast"路由上?

meteor - 如何禁止拥有 Meteor 帐户的人?

c++ - 在数组中查找 y 的 x 个连续值的最有效方法是什么?

java - Twitter 小部件或工具显示我关注的提要?

javascript - 检查时 Bootstrap 按钮类重复,我该如何解决这个问题?

javascript - 我可以在元素关闭之前定位它吗?

javascript - 测试微服务功能时模拟数据库

haskell - Haskell 特里树中的太空泄漏