如何分析我的 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 安装在哪里