我有一个提供聊天室的meteor.js应用程序。突然,当切换房间时,聊天加载(50条消息)非常慢。 50条消息需要几秒钟,我可以看到它们一个接一个地弹出。这是在我的本地机器上,开发人员数据库只有很少的条目。
现在,问题在Chrome中显得不那么明显,所以我怀疑它是客户端问题。但是,我不知道从哪里开始调试。我的模板多次填充,每次都有比上一次更多的消息。
使用Safari分析器向我显示_.forEach,使用minimongo函数的深度调用树占用总CPU时间的32%,(空闲)消耗35%,(程序)消耗16%。
我也在调查卡迪拉。它看起来应该能够帮助我,但我唯一可以告诉我的是"房间"是最慢的小册子,12ms。消息不存储在Rooms中,它们是一个单独的集合,每条消息都包含一个房间ID。
我知道这是一个模糊的问题,但我想知道一般来说Meteor应用程序性能分析的选项是什么。
答案 0 :(得分:3)
最近我面临同样的问题,想调试客户端消息和查询更新。我认为没有客户端的官方工具。 但您可以在本地环境中进行如下调试。我使用过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
如果您使用相同的流星版本,则可以使用pastebin内容替换文件。
要监视从客户端到外部的ddp msg事务,您可以使用这个漂亮的工具。 https://github.com/arunoda/meteor-ddp-analyzer
我猜kadira正致力于创建客户端监控工具。希望问题将被排序。