可以将 Node 的内置分析器附加到现有进程

Possible to attach Node's built-in profiler to an existing process

我熟悉 Node 在 CPU 分析器中的构建:

NODE_ENV=production node --prof server.js

...但是分析器可以附加到 运行 进程吗?

我需要解决的问题是在我们的 IoT 网关启动期间有很多繁重的工作,我想分析 CPU 只有在稳定状态下的繁重工作之后,所以我想将其附加到 运行 进程而不是从启动时进行监控,因为它会完全错误地代表我的稳定状态。

我知道您可以使用调试器执行此操作,但我需要为分析器执行此操作。

您可以使用远程检查器

 NODE_ENV=production node --inspect-brk server.js

现在,进入 chrome 到 chrome://inspect 并启动 NodeJS Inspector 并恢复应用程序

  1. Profiler 选项卡手动启动探查器。
  2. 您可以使用 console.profile()console.profileEnd()
  3. 在您的代码中启动探查器

如果你想检查远程服务器:

  1. 启动脚本:NODE_ENV=production node --inspect=0.0.0.0:9229 server.js
  2. chrome://inspect中单击Configure新建Discover network targets并添加服务器的IP地址和9229端口。引用该页面,然后您将看到要检查的远程服务器。

确保在远程服务器防火墙上打开 9229 端口。如果您只能访问 22(ssh),则尝试打开 ssh-tunel:ssh -L 9229:127.0.0.1:9229 some@myserver -N然后你可以只用--inspect标志启动服务器,没有ip绑定。