banner
TerryHu

Terry's Site

bilibili

golang後端服務炸了?就用pprof

假如你發現服務 cpu / 內存佔用率過高,或是請求響應慢,你想知道是哪段代碼出了問題,pprof 就是用來幫你幹這個的。

  1. 首先要提前引入 pprof 庫,很簡單,就在服務端代碼的基礎上多加幾行代碼
import (
	"net/http"
	_ "net/http/pprof"
)

func main() {
	go func() {
		http.ListenAndServe("localhost:8080", nil)
	}()
	// 主進程
}
  1. 點擊下圖裡的 profile,會採集 30s 的數據保存到 profile 文件裡

Pasted image 20250108223541

之後運行

go tool pprof -http :8081 ./profile
  1. 打開http://localhost:8081/ui/

Pasted image 20250107105500

左上角可以選擇傳說的火焰圖 (Flame Graph):

Pasted image 20250107105539

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。