0

我正在使用 Golang 的 pprof 来分析我的应用程序。我得到这个 .pb 文件,我可以使用它打开

go tool pprof profile.pb

从我输入的工具中

(pprof) raw

根据文档,“输出原始配置文件的文本表示”。这输出

PeriodType: wall nanoseconds
Period: 10000000
Time: 2020-06-09 08:56:49.487 -0400 EDT
Duration: 20s
Samples:
sample/count wall/nanoseconds
       1950 19490080000: 1 2 3 4 5 6 
          0    3040000: 7 
          0      80000: 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 2 3 4 5 6 
          0      80000: 32 33 34 35 36 37 38 23 24 25 26 27 28 29 30 31 2 3 4 5 6 
          0    4000000: 39 40 41 42 43 44 45 46 29 30 47 2 3 4 5 6 
.
.
.
Locations
     1: 0x0 M=1 start /usr/local/lib/python2.7/site-packages/tornado/ioloop.py:863 s=0()
     2: 0x0 M=1 main app/web.py:485 s=0()
     3: 0x0 M=1 main /home/myapp.py:196 s=0()
     4: 0x0 M=1 <module> /home/myapp.py:227 s=0()
.
.
.

我不明白的

我的理解是 pprof 是一个基于样本的分析器。这反映在上面的转储中,因为每一行似乎代表某个样本的一个实例。右边的数字必须是位置表的索引。

令人困惑的部分是第一个表的标题中的“样本/计数”,以及这么多样本似乎计数为零的事实。如果他们的计数为零,为什么他们一开始会在那里?那么“样本/计数”究竟是什么意思呢?

4

0 回答 0