【问题标题】:How to profile meteorjs performance如何分析meteorjs的性能
【发布时间】:2014-07-02 13:35:48
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: javascript meteor profiling


    【解决方案1】:

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

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

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

    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
      

    如果您使用的是相同的流星版本,您可以简单地将文件替换为 pastebin 内容。

    要监控从客户端到外部的 ddp msg 事务,您可以使用这个不错的工具。 https://github.com/arunoda/meteor-ddp-analyzer

    我猜 kadira 正在开发一个客户端监控工具。希望届时问题能得到解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      • 2017-07-11
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      相关资源
      最近更新 更多