【问题标题】:Profiling node application: most time spent in node itself分析节点应用程序:大部分时间花在节点本身
【发布时间】:2018-07-01 11:34:25
【问题描述】:

我正在使用的节点应用程序在某些负载下遇到性能问题。我正在尝试使用 V8 分析器找出问题所在,基本上遵循 this guide。

我在问题加载期间使用node --prof app.js 生成了一个日志文件,并使用node --prof-process isolate-0xnnnnnnnnnnnn-v8.log > processed.txt 对其进行了分析。这一切似乎都很好,但似乎几乎所有的滴答声都花在了节点可执行文件本身中:

 [Summary]:
   ticks  total  nonlib   name
   3887    5.8%   38.2%  JavaScript
   5590    8.4%   55.0%  C++
    346    0.5%    3.4%  GC
  56296   84.7%          Shared libraries
    689    1.0%          Unaccounted

和:

 [Shared libraries]:
   ticks  total  nonlib   name
  55990   84.2%          /usr/bin/node
    225    0.3%          /lib/x86_64-linux-gnu/libc-2.19.so
     68    0.1%          /lib/x86_64-linux-gnu/libpthread-2.19.so
      7    0.0%          /lib/x86_64-linux-gnu/libm-2.19.so
      4    0.0%          [vdso]
      2    0.0%          /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20

这是什么意思?应用程序一直在做什么?如何找到性能问题?

【问题讨论】:

  • 当然好!首先,您需要查看堆栈样本,以便了解为什么它会花费时间。常规百分比不会告诉你任何事情。其次,它可能几乎将所有时间都花在等待像 I/O 这样的系统调用上,如果是这样,您将需要查看导致 I/O 的堆栈样本,以便您可以看到它在等待什么。大多数分析器都吹嘘自己是CPU Profiler。知道这意味着什么吗?它们对 I/O 视而不见,无论它浪费了多少时间。

标签: node.js profiling


【解决方案1】:

我建议尝试使用 VTune Amplifier 作为 V8 分析器的替代品。我能够识别并修复代码中耗时的地方。您可以下载免费试用版here 并关注此step-by-step instructions。希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 2018-02-16
    • 2015-05-17
    相关资源
    最近更新 更多