1. 程式人生 > >使用golang的pprof包對程序進行性能分析

使用golang的pprof包對程序進行性能分析

編譯 內存分析 import 大小 local div pty 沒有 添加

程序經常出現OOM錯誤,然後關鍵字"go pprof"搜到文章<Go程序性能分析pprof>,該文章第二步說運行程序後會生成profile文件,但是編譯運行後發現生成的profile文件大小一直為0,然後關鍵字"go pprof profile is empty"搜到文章<Golang pprof heap profile is empty>,該文章說在運行程序前添加環境變量GODEBUG="memprofilerate=1",但是好像並沒有用處。

然後還是之前的關鍵字"go pprof"搜到文章<使用golang的pprof包對程序進行性能分析>,該文章指出"在代碼中使用pprof了,實際運用中分三種情況",因為程序並非是運行一次就退出,而是作為一個服務,所以"需要開啟一個goroutine來開啟端口監聽",然後參考文章<go內存泄露case>,註意第二步"(2)memory profile"的描述"使用--alloc_space可以顯示所有分配的對象",當使用web命令時會報錯"Cannot find dot, have you installed Graphviz?",然後關鍵字"centos Graphviz"搜到文章<Linux Centos7安裝配置畫圖工具Graphviz>,參照該文章安裝了Graphviz但是web命令依然會報錯"xdg-open: no method available for opening ‘/tmp/pprof-964683453/pprof001.svg‘",不知道為什麽就只好把臨時的svg文件拷貝到windows下用ie來看,不理解為什麽後面curl -T來拷貝時說該文件不存在。

如果程序代碼中沒有`import _ "net/http/pprof"`,則執行"go tool pprof http://localhost:6060/debug/pprof/heap"會報錯"server response: 404 Not Found"。關鍵字"inuse_space"搜到文章<golang 內存分析/動態追蹤>

使用golang的pprof包對程序進行性能分析