go pprof 及 trace 完整操作指南 GC或性能分析 (windows平臺linux平臺皆可)

pprof 和 trace 這東西可以分析GC具體的瓶頸位置!!以及每一個線程具體什麼時候運行的!!反正各種好處!

之前網上 大家各種抄襲,複製,我相信沒有幾個人真正玩過這玩意兒,因爲項目需要,最後我也是在國外網站上才找到真正使用方法!!下面介紹一下。

我設置了一個pprof 以及 trace 聯合使用的方案!

第一步:也是最重要的一步,就是下載谷歌瀏覽器!(之前一直卡這了)

第二步:下載 Graphviz   http://graphviz.org/download/ 

安裝後配置環境變量,再path裏面添加安裝目錄!

第三步:添加以下測試代碼 (記得手動添加   _"net/http/pprof"  不然不會有效果!)

具體看源碼

package main

import (
   "net/http"
   "runtime"
   "os"
   "fmt"
   "runtime/trace"
   _"net/http/pprof"
   "runtime/debug"
   "time"
   "sync"
)

func main() {
   //開啓強大的分析器
   go pprof()
    //以下是運行測試(也可以貼你自己的)代碼
   var c sync.Map
   for i:=0;i<100;i++{
      time.Sleep(time.Second*1)
      go func(){
         for j:=0;j<1000000;j++{
            time.Sleep(time.Millisecond*20)
            c.Store(fmt.Sprintf("%d",j),j)
            fmt.Println(c.Load(fmt.Sprintf("%d",j)))

         }
      }()
   }
   time.Sleep(time.Second*20)
    fmt.Scan()
}


//運行pprof分析器
func pprof(){
   go func() {
      //關閉GC
      debug.SetGCPercent(-1)
      //運行trace
      http.HandleFunc("/start", traces)
      //停止trace
      http.HandleFunc("/stop", traceStop)
      //手動GC
      http.HandleFunc("/gc", gc)
      //網站開始監聽
      http.ListenAndServe(":6060", nil)
   }()
}

//手動GC
func gc(w http.ResponseWriter, r *http.Request) {
   runtime.GC()
   w.Write([]byte("StartGC"))
}

//運行trace
func traces(w http.ResponseWriter, r *http.Request){
   f, err := os.Create("trace.out")
   if err != nil {
      panic(err)
   }


   err = trace.Start(f)
   if err != nil {
      panic(err)
   }
   w.Write([]byte("TrancStart"))
   fmt.Println("StartTrancs")
}

//停止trace
func traceStop(w http.ResponseWriter, r *http.Request){
   trace.Stop()
   w.Write([]byte("TrancStop"))
   fmt.Println("StopTrancs")
}

第四步:接下來就可以享受了!!哈哈

程序運行後隨便打開一個CMD 然後輸入

go tool pprof  http://localhost:6060/debug/pprof/profile

然後等30秒就分析好了

然後再輸入 web

就可以查看具體pprof的信息了



第五步:如果想看trace的信息 只需要再谷歌瀏覽器中輸入


然後等一會兒,再輸入

當然期間也可以 手動gc

然後 程序運行的地方自動生成一個文件 

在cmd中輸入 go tool trace    trace.out(具體路徑)


它會生成一個路徑 一定要谷歌瀏覽器



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章