golang中的pprof支持
專注后臺(tái)開(kāi)發(fā)相關(guān)技術(shù),廣度深度并存,干貨情懷同在。
微信搜索【盼盼編程】關(guān)注這個(gè)不一樣的程序員。
??強(qiáng)烈推薦人工智能學(xué)習(xí)網(wǎng)站??
Go語(yǔ)言有一個(gè)非常棒的設(shè)計(jì)就是標(biāo)準(zhǔn)庫(kù)里面帶有代碼的性能監(jiān)控工具,在兩個(gè)地方有包:
net/http/pprofruntime/pprof
其實(shí)net/http/pprof中只是使用runtime/pprof包來(lái)進(jìn)行封裝了一下,并在http端口上暴露出來(lái)
beego支持pprof
目前beego框架新增了pprof,該特性默認(rèn)是不開(kāi)啟的,如果你需要測(cè)試性能,查看相應(yīng)的執(zhí)行g(shù)oroutine之類的信息,其實(shí)Go的默認(rèn)包"net/http/pprof"已經(jīng)具有該功能,如果按照Go默認(rèn)的方式執(zhí)行Web,默認(rèn)就可以使用,但是由于beego重新封裝了ServHTTP函數(shù),默認(rèn)的包是無(wú)法開(kāi)啟該功能的,所以需要對(duì)beego的內(nèi)部改造支持pprof。
- 首先在beego.Run函數(shù)中根據(jù)變量是否自動(dòng)加載性能包
- 設(shè)計(jì)ProfConterller
使用入門
通過(guò)上面的設(shè)計(jì),你可以通過(guò)如下代碼開(kāi)啟pprof:
beego.PprofOn = true?
我們可以通過(guò)命令行獲取更多詳細(xì)的信息
go tool pprof http://localhost:8080/debug/pprof/profile這時(shí)候程序就會(huì)進(jìn)入30秒的profile收集時(shí)間,在這段時(shí)間內(nèi)拼命刷新瀏覽器上的頁(yè)面,盡量讓cpu占用性能產(chǎn)生數(shù)據(jù)。
(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
?
???強(qiáng)烈推薦人工智能學(xué)習(xí)網(wǎng)站??
專注后臺(tái)開(kāi)發(fā)相關(guān)技術(shù),廣度深度并存,干貨情懷同在。
微信搜索【盼盼編程】關(guān)注這個(gè)不一樣的程序員。
總結(jié)
以上是生活随笔為你收集整理的golang中的pprof支持的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: golang多语言支持
- 下一篇: 大厂动态规划面试汇总,提升内功