程式經常出現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 記憶體分析/動態追蹤>