中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-11-30 11:28:33 來源:億速云 閱讀:165 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關怎樣使用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簡單使用就是這樣了,掌握了使用方法,在實踐中加以利用才是我們的目的,希望我寫的這些可以對你有所幫助。

感謝各位的閱讀!關于怎樣使用golang的pprof包對程序進行性能分析就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

九台市| 都匀市| 新津县| 开化县| 怀化市| 资中县| 亚东县| 左云县| 宜兰县| 策勒县| 夏河县| 叶城县| 信阳市| 南京市| 靖远县| 紫阳县| 福安市| 靖州| 池州市| 景宁| 永嘉县| 蓬安县| 灵台县| 绥滨县| 当阳市| 达孜县| 拉萨市| 馆陶县| 勃利县| 华安县| 台前县| 烟台市| 栾川县| 威海市| 安泽县| 固原市| 遵义市| 萍乡市| 二手房| 揭东县| 昆山市|