在Java JVM中,kill -3
强制进程打印所有正在运行的线程的当前堆栈跟踪。我发现快速找到瓶颈非常有效。
V8中是否有等效物?我可以让V8打印当前的堆栈跟踪吗?
澄清: 我假设,由于节点的异步性质,它不如典型的非异步程序有用。尽管如此,如果有一种简单的方法可以访问一些堆栈跟踪,那么查看它并不需要花费太多时间。
根据我的经验,在您需要切换到更高级的工具之前,可以快速找到一些明显的瓶颈。
答案 0 :(得分:2)
您可以使用 heapdump 工具完成相同的操作。我发现以下相同的以下文章(也对我有用):
答案 1 :(得分:1)
Node已满载诊断信息,上面的技巧(如果我理解正确的话)将是多余的,但可以随时纠正我。
我将尝试列出所有我认为有用的工具:
其他人(只需用Google搜索。)
答案 2 :(得分:1)
在此主题上,您有以下想法:
# node --debug-brk buggy.js Debugger listening on port 5858
在另一个终端中:
connecting to 127.0.0.1:5858 ... ok
break in buggy.js:16
14 }
15
>16 z();
17
18 });
debug> cont```
(wait for the node process to start using 100% CPU)
```debug> step
break in buggy.js:3
1 function x() {
2 var i = 0;
> 3 while(1) {
4 i++;
5 }
debug> bt
#0 buggy.js:3:8
#1 buggy.js:9:2
#2 buggy.js:13:2
#3 buggy.js:16:1```
Source:
https://github.com/nodejs/node-v0.x-archive/issues/25263