golang 效能分析 pprof

2021-10-03 08:50:30 字數 2588 閱讀 7379

如果是使用了http包的路由,則只需要import _ "net/http/pprof"即可

mutexmutex導致爭用的goroutine堆疊

總的分析思路就是通過toptraces找出關鍵函式,再通過list檢視函式**,找到關鍵**行並確認優化方案

top檢視占用最高的num項

traces列印匹配的呼叫棧,以及相應的指標資訊

list檢視匹配的函式具體每一行的cpu或記憶體等占用資料

source頁提供具體導致占用記憶體、cpu、goroutine的**行

首先我們需要得到進行pprof分析的程式的源**,然後通過-source_path-trim_path引數來重定向使用的源**

另一種是從程式執行到現在所有的記憶體分配,不管是否已經被 gc 過了,稱為alloc

go tool pprof加上-sample_index引數後,可以切換記憶體分析的型別

可以使用go tool pprof -base結合toplist定位記憶體增長的部分

heap並不能準確定位記憶體洩漏的原因

cgo 導致的記憶體問題,pprof 是分析不出來的

goroutine profile: total 32023

32015 @ 0x42e15a 0x42e20e 0x40534b 0x4050e5 0x6d8559 0x6d831b 0x45abe1

# 0x6d8558 main.alloc2.func1+0xf8 /home/ubuntu/heap/leak_demo.go:53

# 0x6d831a main.alloc2+0x2a /home/ubuntu/heap/leak_demo.go:54

32015 @ 0x42e15a 0x42e20e 0x40534b 0x4050e5 ...# 0x6d8558 main.alloc2.func1+0xf8 /home/ubuntu/heap/leak_demo.go:53

goroutine 20 [chan send, 2 minutes]:

main.alloc2.func1(0xc42015e060)

/home/ubuntu/heap/leak_demo.go:53 +0xf9

main.alloc2(0xc42015e060)

/home/ubuntu/heap/leak_demo.go:54 +0x2b

created by main.alloc1

/home/ubuntu/heap/leak_demo.go:42 +0x3f

下面是呼叫棧,可以看到執行到哪一行停住了

golang 效能分析工具Pprof

pprof是golang程式乙個效能分析的工具,可以檢視堆疊 cpu資訊等 pprof有2個包 net http pprof以及runtime pprof 二者的關係 net http pprof包只是使用runtime pprof包來進行封裝了一下,並在http埠上暴露出來。假如你的go呈現是用h...

golang學習筆記 pprof效能分析2

golang自帶非常強大的效能分析工具,它可以在go程式的執行中以精緻的細節顯示所有執行時事件,今天我們就了解一下go tool trace的強大之處。go tool trace 顯示了非常之多的資訊,為了簡單起見,我們先概括的看一下他顯示了些什麼,下面是我生成的所有trace目錄,具體的如圖上所示...

golang工具 二 PProf效能剖析

應用程式在執行時,總是會出現一些你意想不到的問題,例如 cpu使用率過高,記憶體不斷增大 疑似記憶體洩露 或者是goroutine數量不斷增加 goroutine洩露 那麼在這些問題出現時如何進行排查呢,這裡介紹pprof工具。pprof是什麼 pprof是析效能分析資料的工具,可以生成視覺化的文字...