使用pprof進行效能分析

xing393939發表於2020-12-02

說明

自go的1.10版本後,就不再需要第三方的工具了(例如go-pprof和google/pprof),直接用官方的cli工具即可。唯一需要安裝的是Graphviz,安裝方法見官網(windows安裝完成後需要在有管理員許可權的cmd視窗輸入dot -c註冊外掛)。

使用方式一:檢視報告

  1. Web專案的整合辦法:
    1. 專案使用預設的http.DefaultServeMux,則直接import _ “net/http/pprof”
    2. 專案使用自定義的Mux,先import net/http/pprof,再註冊如下路由
      • r.HandleFunc(“/debug/pprof/“, pprof.Index)
      • r.HandleFunc(“/debug/pprof/cmdline”, pprof.Cmdline)
      • r.HandleFunc(“/debug/pprof/profile”, pprof.Profile)
      • r.HandleFunc(“/debug/pprof/symbol”, pprof.Symbol)
      • r.HandleFunc(“/debug/pprof/trace”, pprof.Trace)
  2. 非Web專案的整合辦法:
    1. 方法1:先import "runtime/pprof",然後在需要的地方pprof.StartCPUProfile(f)和pprof.StopCPUProfile(),將報告日誌寫入檔案控制程式碼f
    2. 方法2:先import _ "net/http/pprof",再開啟一個執行緒來監聽:log.Println(http.ListenAndServe("0.0.0.0:6060", nil))

對於Web專案,檢視報告直接訪問專案地址/debug/pprof/就可以了,對於非Web專案,則使用go tool pprof 報告日誌

使用方式二:檢視呼叫關係圖和火焰圖

在方式一的基礎上,輸入go tool pprof -http :8080 localhost:6060
然後訪問localhost:8080 即可。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章