如何分析我的 Node 应用程序以查看我在哪里使用了内存和 CPU 资源?

Posted

技术标签:

【中文标题】如何分析我的 Node 应用程序以查看我在哪里使用了内存和 CPU 资源?【英文标题】:How can I profile my Node app to see where I'm using up memory and CPU resources? 【发布时间】:2011-11-10 11:03:54 【问题描述】:

我的网站CompassionPit.com 由 Node.js 提供支持。我已经发布了源代码;它是hosted at GitHub。该应用程序本身在具有 768MB RAM 的 Linode 上运行(我最近升级了服务器;它是 512MB)。

最近我收到了来自 Linode 的 CPU 使用率通知:我们的使用率越来越频繁地达到 90% 以上。我打电话给 Linode 想看看我能做些什么来升级对 CPU 资源的访问,但显然我现在还好,因为如果我们最大限度地达到 100%,那么我们可以溢出到接下来的 3 个内核(Linodes 是 4 个处理器 Xen实例)。

我预计我很快需要重组应用程序以由多服务器设置运行,但我凭直觉相信,正确的分析将导致更明智的架构决策。如果我错了,请纠正我。

【问题讨论】:

CompassionPit.com 似乎已经消失了,对于几年后来看这篇文章的人来说。 【参考方案1】:

节点检查器无法在 0.6.x 版本之后配置节点

以下插件已更新,可与新版本的 v8(节点 0.7.x +)一起使用。它是除了 nodetime.com 之外唯一仍在工作的网站。它使用实际的 webkit 调试器:

https://github.com/c4milo/node-webkit-agent

它也有非常清晰的说明。

【讨论】:

这不再是真的了。节点检查器已同时更新。 @LeoKoppelkamm 您在哪里看到 Node Inspector 支持分析? README still states“Profiler 尚未实现”。 我指的是 0.6.x 评论。节点检查器有一段时间完全坏了,但同时已经修复了。我将编辑答案以清除它。【参考方案2】:

我使用https://github.com/dannycoates/node-inspector 进行分析取得了相当大的成功。 README 文件的底部有一个设置指南。

从更高版本的 Node.js 开始,node-inspector 的 profiling 部分不再起作用。我在--prof (http://code.google.com/p/v8/wiki/V8Profiler) 和https://github.com/c4milo/node-webkit-agent 上取得了相当大的成功,如下面的答案所述。

【讨论】:

我想从 Freenode 上的#Node.js 频道中说出来,人们还建议使用 dtrace(信用:H4ns)和 v8-profiler(Glenjamin)。【参考方案3】:

从 v6.3.0 开始,you can now runnode --inspect your_script.js

Node 将打印一个到控制台的 URL,该 URL 可以在 Chrome 中打开,它将连接您以显示一个功能齐全的 Web Inspector,您可以使用它来分析 Node 进程。

运行node --inspect --debug-brk 以立即暂停执行(如果您需要在应用程序启动后立即启动分析会话,这很方便)

【讨论】:

以上是关于如何分析我的 Node 应用程序以查看我在哪里使用了内存和 CPU 资源?的主要内容,如果未能解决你的问题,请参考以下文章

如果我在 vscode 中使用 npm,我的 jquery 安装在哪里

我如何使用 perf 来分析我的代码?

Apple App SKU:如何查看和更改 SKU? [关闭]

如何查看并设置NODE

我在哪里可以找到我的 yii 应用程序的 yii 版本?

如何在Windows7 设置node的环境变量NODE