如何描述meteorjs的表现

时间:2014-06-18 14:27:10

标签: javascript meteor profiling

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

现在,问题在Chrome中显得不那么明显,所以我怀疑它是客户端问题。但是,我不知道从哪里开始调试。我的模板多次填充,每次都有比上一次更多的消息。

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

我也在调查卡迪拉。它看起来应该能够帮助我,但我唯一可以告诉我的是"房间"是最慢的小册子,12ms。消息不存储在Rooms中,它们是一个单独的集合,每条消息都包含一个房间ID。

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

1 个答案:

答案 0 :(得分:3)

最近我面临同样的问题,想调试客户端消息和查询更新。我认为没有客户端的官方工具。 但您可以在本地环境中进行如下调试。我使用过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
    
  5. 如果您使用相同的流星版本,则可以使用pastebin内容替换文件。

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

    我猜kadira正致力于创建客户端监控工具。希望问题将被排序。