可以将 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 并恢复应用程序
- 从
Profiler
选项卡手动启动探查器。
- 您可以使用
console.profile()
和 console.profileEnd()
在您的代码中启动探查器
如果你想检查远程服务器:
- 启动脚本:
NODE_ENV=production node --inspect=0.0.0.0:9229 server.js
- 在
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绑定。
我熟悉 Node 在 CPU 分析器中的构建:
NODE_ENV=production node --prof server.js
...但是分析器可以附加到 运行 进程吗?
我需要解决的问题是在我们的 IoT 网关启动期间有很多繁重的工作,我想分析 CPU 只有在稳定状态下的繁重工作之后,所以我想将其附加到 运行 进程而不是从启动时进行监控,因为它会完全错误地代表我的稳定状态。
我知道您可以使用调试器执行此操作,但我需要为分析器执行此操作。
您可以使用远程检查器
NODE_ENV=production node --inspect-brk server.js
现在,进入 chrome 到 chrome://inspect
并启动 NodeJS Inspector 并恢复应用程序
- 从
Profiler
选项卡手动启动探查器。 - 您可以使用
console.profile()
和console.profileEnd()
在您的代码中启动探查器
如果你想检查远程服务器:
- 启动脚本:
NODE_ENV=production node --inspect=0.0.0.0:9229 server.js
- 在
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绑定。