如何可视化NodeJS .cpuprofile

时间:2017-06-21 22:53:26

标签: node.js profiling

我使用v8-profiler来配置我的NodeJS应用程序。它会生成一个.cpuprofile文件。

我曾经能够使用Google Chrome内置的DevTools可视化文件的内容。但是,Chrome最近更改了分析结果的文件格式,Chrome无法再读取.cpuprofile文件。

注意:我的目标是查看调用树和自下而上的内容。我不关心火焰图。

感谢。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

是的,似乎格式已经改变。从NodeJS v9.11.1开始,我得到了一个类似树的JSON结构:

{
  "typeId": "CPU",
  "uid": "1",
  "title": "Profile 1",
  "head": {
    "functionName": "(root)",
    "url": "",
    "lineNumber": 0,
    "callUID": 1319082045,
    "bailoutReason": "no reason",
    "id": 17,
    "hitCount": 0,
    "children": [
      {
        "functionName": "(anonymous function)",
        "url": "...",
        "lineNumber": 726,
        "callUID": 3193325993,
        "bailoutReason": "no reason",
        "id": 16,
        "hitCount": 0,
        "children": [
          {
             ...

来自Chromium 66.0.3359.117我得到一个扁平的结构:

{
  "nodes": [
    {
      "id": 1,
      "callFrame": {
        "functionName": "(root)",
        "scriptId": "0",
        "url": "",
        "lineNumber": -1,
        "columnNumber": -1
      },
      "hitCount": 0,
      "children": [
        2,
        3
      ]
    },
    {
      ...

对我来说有用的是chrome2calltree工具,它采用NodeJS使用的旧格式,并将其转换为.prof文件,KCacheGrind和QCacheGrind等工具可以打开。