首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有为NodeJS收集任何数据。

没有为NodeJS收集任何数据。
EN

Stack Overflow用户
提问于 2016-12-09 12:18:37
回答 1查看 92关注 0票数 2

我试图用Dtrace对NodeJS进行剖析,但这并不奏效。我使用的命令是:

代码语言:javascript
复制
dtrace -n 'profile-97/execname == "node" && arg1/{@[jstack(150, 8000)] = count(); } tick-60s { exit(0); }' > stacks.out

我得到的输出是:

代码语言:javascript
复制
CPU     ID                    FUNCTION:NAME
  0 312432                        :tick-30s

如果我做了dtrace -l,那么我得到的例子是:

代码语言:javascript
复制
58814      instr            kernel              setup_APIC_eilvt-jne 0xffffffff81045e27
58815      instr            kernel               setup_APIC_eilvt-je 0xffffffff81045e34
58816      instr            kernel               setup_APIC_eilvt-je 0xffffffff81045e38
58817      instr            kernel            setup_APIC_eilvt-callr 0xffffffff81045e46
58818      instr            kernel            setup_APIC_eilvt-callr 0xffffffff81045e6a
58819      instr            kernel      lapic_timer_setup.part.4-cli 0xffffffff81045ea0
58820      instr            kernel      lapic_timer_setup.part.4-jbe 0xffffffff81045eaa
58821      instr            kernel      lapic_timer_setup.part.4-jbe 0xffffffff81045eaf
58822      instr            kernel    lapic_timer_setup.part.4-callr 0xffffffff81045ed4
58823      instr            kernel              lapic_timer_setup-je 0xffffffff81045f39
58824      instr            kernel            lapic_timer_setup-repz 0xffffffff81045f3b
58825      instr            kernel     local_apic_timer_interrupt-je 0xffffffff81045f74
58826      instr            kernel  local_apic_timer_interrupt-callr 0xffffffff81045f90
58827      instr            kernel     local_apic_timer_interrupt-je 0xffffffff81045f99
58828      instr            kernel              clear_local_APIC-jne 0xffffffff8104610e
58829      instr            kernel               clear_local_APIC-jg 0xffffffff810461c3
58830      instr            kernel               clear_local_APIC-je 0xffffffff8104629a
58831      instr            kernel            disable_local_APIC-jne 0xffffffff810463bd
58832      instr            kernel             disable_local_APIC-je 0xffffffff810463c7
58833      instr            kernel          disable_local_APIC-callr 0xffffffff810463c9
58834      instr            kernel           disable_local_APIC-repz 0xffffffff81046400
58835      instr            kernel                 lapic_suspend-jne 0xffffffff8104641d
58836      instr            kernel                  lapic_suspend-jg 0xffffffff81046555
58837      instr            kernel                 lapic_suspend-cli 0xffffffff81046561
58838      instr            kernel               lapic_suspend-callr 0xffffffff81046568

如果我列出所有打开文件的进程,请使用:

代码语言:javascript
复制
dtrace -q -n syscall::open:entry'{ printf("%-16s%-16s\n", execname,copyinstr(arg0)); }'

我得到了打开文件的所有进程,它甚至显示了NodeJS的启动和工作准备:)

代码语言:javascript
复制
vminfo          /var/run/utmp
vminfo          /var/run/utmp
systemd         /proc/145/cgroup
vminfo          /var/run/utmp
vminfo          /var/run/utmp
vminfo          /var/run/utmp
vminfo          /var/run/utmp
systemd         /proc/460/cgroup
vminfo          /var/run/utmp
vminfo          /var/run/utmp
node            /etc/ld.so.cache
node            /lib/x86_64-linux-gnu/libdl.so.2
node            /lib/x86_64-linux-gnu/librt.so.1
node            /usr/lib/x86_64-linux-gnu/libstdc++.so.6
node            /lib/x86_64-linux-gnu/libm.so.6
node            /lib/x86_64-linux-gnu/libgcc_s.so.1
node            /lib/x86_64-linux-gnu/libpthread.so.0
node            /lib/x86_64-linux-gnu/libc.so.6
node            /dev/urandom
node            /home/davidgatti/test/ble.js
node            /etc/resolv.conf
node            /etc/nsswitch.conf
node            /dev/urandom
node            /dev/pts/0
node            /dev/null
node            /dev/pts/0
vminfo          /var/run/utmp
vminfo          /var/run/utmp
systemd         /proc/145/cgroup

问题

我做错什么了?我应该如何探测NodeJS或任何其他进程来获取一些有用的信息?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-03 19:49:29

遗憾的是,这在Linux下是行不通的,因为Dtrace与系统内核有严格的联系。

例如,Dtrace在macOS或Solaris下工作,因为内核只有一个版本,如果做了任何更改,作者可以对Dtrace进行适当的更改。

因为不仅Linux在每个发行版中都有许多不同的内核,所以您可以任意编译自己的版本,这意味着不可能为这个系统创建一个工作的Dtrace。

因为Dtrace需要连接内核的特定部分,以便能够跟踪应用程序中正在发生的事情。

您可以在原来的Dtrace的问题部分中阅读更多有关这方面的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41060352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档