我的 Meteor 应用程序在服务器端(节点进程)使用的 CPU 比可接受的多得多,我想对其进行调查。
两个同时的客户端正在引导节点使用 100% 的 CPU。这可能与观察者的大量使用有关,但我需要在更改整个应用程序之前对其进行进一步调查。
那么,我可以使用什么工具来分析它?如何使用它?
我找到的最佳解决方案是v8-profiler(加上node-inspector)。
去[Meteor installation folder]/dev_bundle/lib/node_modules
。
执行$ npm install v8-profiler
那里。
添加您的服务器代码:
Meteor.startup(function() {
profiler = __meteor_bootstrap__.require("v8-profiler")
Meteor._debug("Server started!");
});
无论在您的应用服务器代码中的任何位置,您都可以通过以下方式进行分析:
profiler.startProfiling("name"); //begin cpu profiling
yourCode();
var cpuProfile = profiler.stopProfiling("name"); //finish cpu profiling
别忘了跑node-inspector
您还应该看看 Meteor-specific Observatory。它是一个功能强大的服务器端和客户端日志记录包,具有对任意函数的分析支持,以及“模板生命周期方法、集合方法(目前仅支持查找)和订阅分析的自动记录”。
APM,Application Performance Monitoring ,是MeteorHacks的 Arunoda Susiripala 开发的 Meteor包+云服务。它现在处于测试阶段,看起来很有希望:
从 Costly Calls 选项卡中,您可以深入研究方法并确定那些耗时最长的方法:
这个 1 分钟的教程视频显示了这种昂贵方法的识别,这可能是你想要的。
NodeTime是一个非常棒的分析服务。它是免费使用的,这在像您这样的情况下特别有用,而且设置起来超级容易!
现在有
console.time('myFunction');
myFunction();
console.timeEnd('myFunction')
//Outputs: myFunction: xxxxms
我刚刚验证它可以使用 Meteor 1.2 工作。超级简单,容易和内置。