首頁 > 後端開發 > Golang > 主體

如何使用golang的pprof套件對程式進行效能分析

藏色散人
發布: 2020-11-25 15:12:02
轉載
2797 人瀏覽過

下面由golang教學欄位來介紹使用golang的pprof套件對程式進行效能分析,希望對需要的朋友有幫助!

如何使用golang的pprof套件對程式進行效能分析

golang提供pprof包,可以監控golang程式的堆疊,cpu的耗時等效能資訊。下邊就說一下這個pprof包的使用。
1,首先是引入,在兩個地方可以引入:

“net/http/pprof”
 "runtime/prof"
登入後複製

其中"net/http/pprof"是用“runtime/pprof” 包裝了一下,然後再http端口暴露出來,讓我們可以再瀏覽器查看程式的效能分析。 「runtime/pprof」可以產生*.pprof的檔案,然後根據這個檔案做效能分析.
2,然後就是在程式碼中使用pprof了,實際運用中分三種情況:
1)
如果程式本身就是web伺服器,那麼只需要透過程式碼:

import(
_"net/http/pprof"
 )
登入後複製

,將pprof引入,然後在瀏覽器存取http://localhost:port/debug/pprof/就能看到目前web服務的狀態,包括CPU佔用情況和記憶體使用情況等
2)
如果你的go程式不是web伺服器,而是一個服務進程,那麼你就需要開啟一個goroutine來開啟連接埠監聽。
例如:

go func() {
         log.Println(http.ListenAndServe("localhost:6060", nil)) 
 }()
登入後複製

同樣的訪問http://localhost:6060/debug/pprof就可以查看程式運作的資訊。
3)如果你的程式只是一個應用程序,那麼你就需要使用「runtime/ppprof」套件了。
官網給的程式碼是這樣的:

var cpuprofile = flag.String("cpuprofile", "", "write cpu profile to file")
 func main() {
     flag.Parse()
     if *cpuprofile != "" {
         f, err := os.Create(*cpuprofile)
         if err != nil {
             log.Fatal(err)
         }
         pprof.StartCPUProfile(f)
         defer pprof.StopCPUProfile()
     }
登入後複製

,然後我們在執行這個程式的時候加上一個參數--cpuprofile=*.prof就可以再對應目錄下產生一個.pprof的檔案,程式運行的資訊就都在這個檔案裡了。然後進入對應目錄,執行指令:go tool pprof 加剛才產生的pprof檔命即可進入pprof中,輸入web指令,可以產生對應的svg檔。

第二種方式:
再使用「net/http/pprof」套件的時候,我們同樣可以使用go tool pprof指令來檢視程式執行的情況。例如我們啟動了一個簡單的go伺服器程序,監聽再8080端口,那麼我們就可以使用以下命令進入pprof的命令行:
利用這個命令查看堆疊資訊:

go tool pprof http://localhost:6060/debug/pprof/heap
 利用这个命令可以查看程序CPU使用情况信息:
 go tool pprof http://localhost:6060/debug/pprof/profile
 使用这个命令可以查看block信息:
 go tool pprof http://localhost:6060/debug/pprof/block
 进入pprof命令行,输入help,查看命令帮助,
 topN命令可以查看占用前N 的线程或者函数,用svg可以生成svg图。
 pprof简单使用就是这样了,掌握了使用方法,在实践中加以利用才是我们的目的,希望我写的这些可以对你有所帮助。
登入後複製

ps ;因為我並沒有真正的用golang寫過大型的程序,也沒有對這個包真正的用過,只是看了幾篇文章和官網上的一些資料匯總了一下,難免犯形而上學的錯誤,歡迎指正!謝謝

以上是如何使用golang的pprof套件對程式進行效能分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板