日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

golang中的pprof支持

發布時間:2025/6/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 golang中的pprof支持 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

專注后臺開發相關技術,廣度深度并存,干貨情懷同在。
微信搜索【盼盼編程】關注這個不一樣的程序員。

??強烈推薦人工智能學習網站??

Go語言有一個非常棒的設計就是標準庫里面帶有代碼的性能監控工具,在兩個地方有包:

net/http/pprofruntime/pprof

其實net/http/pprof中只是使用runtime/pprof包來進行封裝了一下,并在http端口上暴露出來

beego支持pprof

目前beego框架新增了pprof,該特性默認是不開啟的,如果你需要測試性能,查看相應的執行goroutine之類的信息,其實Go的默認包"net/http/pprof"已經具有該功能,如果按照Go默認的方式執行Web,默認就可以使用,但是由于beego重新封裝了ServHTTP函數,默認的包是無法開啟該功能的,所以需要對beego的內部改造支持pprof。

  • 首先在beego.Run函數中根據變量是否自動加載性能包
if PprofOn {BeeApp.RegisterController(`/debug/pprof`, &ProfController{})BeeApp.RegisterController(`/debug/pprof/:pp([\w]+)`, &ProfController{}) }
  • 設計ProfConterller
package beegoimport ("net/http/pprof" )type ProfController struct {Controller }func (this *ProfController) Get() {switch this.Ctx.Params[":pp"] {default:pprof.Index(this.Ctx.ResponseWriter, this.Ctx.Request)case "":pprof.Index(this.Ctx.ResponseWriter, this.Ctx.Request)case "cmdline":pprof.Cmdline(this.Ctx.ResponseWriter, this.Ctx.Request)case "profile":pprof.Profile(this.Ctx.ResponseWriter, this.Ctx.Request)case "symbol":pprof.Symbol(this.Ctx.ResponseWriter, this.Ctx.Request)}this.Ctx.ResponseWriter.WriteHeader(200) }

使用入門

通過上面的設計,你可以通過如下代碼開啟pprof:

beego.PprofOn = true

?

我們可以通過命令行獲取更多詳細的信息

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

這時候程序就會進入30秒的profile收集時間,在這段時間內拼命刷新瀏覽器上的頁面,盡量讓cpu占用性能產生數據。

(pprof) top10Total: 3 samples1 33.3% 33.3% 1 33.3% MHeap_AllocLocked1 33.3% 66.7% 1 33.3% os/exec.(*Cmd).closeDescriptors1 33.3% 100.0% 1 33.3% runtime.sigprocmask0 0.0% 100.0% 1 33.3% MCentral_Grow0 0.0% 100.0% 2 66.7% main.Compile0 0.0% 100.0% 2 66.7% main.compile0 0.0% 100.0% 2 66.7% main.run0 0.0% 100.0% 1 33.3% makeslice10 0.0% 100.0% 2 66.7% net/http.(*ServeMux).ServeHTTP0 0.0% 100.0% 2 66.7% net/http.(*conn).serve (pprof)web


?


???強烈推薦人工智能學習網站??

專注后臺開發相關技術,廣度深度并存,干貨情懷同在。
微信搜索【盼盼編程】關注這個不一樣的程序員。

總結

以上是生活随笔為你收集整理的golang中的pprof支持的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。