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

标签 node.js profile

我熟悉 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 绑定(bind)。

关于node.js - 可以将 Node 的内置分析器附加到现有进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54810483/

相关文章:

本地主机的 Node.js https 服务器

javascript - 配置 Express 为每个 url 发送 index.html,除了那些以 .css 和 .js 结尾的

liferay - 如何在 Liferay 中检索用户个人资料图片

python - 我的 Python 代码有多少个线程?

mysql - 用户个人资料不显示其数据

android - 在 Android 上实现消息访问配置文件(接收器端)?

node.js - 在 Windows : rolling back Error: EPERM, 上安装 PhantomJS 取消链接 phantomjs.exe

json - 在 Express 中读取嵌套的 json 正文参数

ajax - 如何使用 NodeJS 和 node-rest-client 方法将动态数据发布到前端 HTML

python - 优化python中大文件的正则表达式和文件读取操作