九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
golang pprof使用

轉(zhuǎn)自:http://www.cnblogs.com/yjf512/archive/2012/12/27/2835331.html

go中有pprof包來做代碼的性能監(jiān)控,在兩個地方有包:

net/http/pprof

runtime/pprof

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

pprof包

web 服務(wù)器

如果你的go程序是用http包啟動的web服務(wù)器,你想查看自己的web服務(wù)器的狀態(tài)。這個時候就可以選擇net/http/pprof。你只需要引入包_"net/http/pprof",然后就可以在瀏覽器中使用http://localhost:port/debug/pprof/直接看到當(dāng)前web服務(wù)的狀態(tài),包括CPU占用情況和內(nèi)存使用情況等。具體使用情況你可以看godoc的說明。

服務(wù)進(jìn)程

如果你的go程序不是web服務(wù)器,而是一個服務(wù)進(jìn)程,那么你也可以選擇使用net/http/pprof包,同樣引入包net/http/pprof,然后在開啟另外一個goroutine來開啟端口監(jiān)聽。

比如:

go func() {        log.Println(http.ListenAndServe("localhost:6060", nil)) 

}()

應(yīng)用程序

如果你的go程序只是一個應(yīng)用程序,比如計算fabonacci數(shù)列,那么你就不能使用net/http/pprof包了,你就需要使用到runtime/pprof。具體做法就是用到pprof.StartCPUProfile和pprof.StopCPUProfile。比如下面的例子:

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()    }

運(yùn)行程序的時候加一個--cpuprofile參數(shù),比如fabonacci --cpuprofile=fabonacci.prof

這樣程序運(yùn)行的時候的cpu信息就會記錄到XXX.prof中了。

下一步就可以使用這個prof信息做出性能分析圖了(需要安裝graphviz)。

使用go tool pprof (應(yīng)用程序) (應(yīng)用程序的prof文件)

進(jìn)入到pprof,使用web命令就會在/tmp下生成svg文件,svg文件是可以在瀏覽器下看的。像這個樣子:

如果你的程序非常簡單,比如只有println一個語句,你用pprof.StartCPUProfile是打印不出任何東西的。

舉例

下面拿go-tour舉個例子,這是個web程序,我在代碼中加入了

_ "net/http/pprof"

在瀏覽器中我就可以直接看prof信息了

生成CPU狀態(tài)分析圖

下面我們想要生成CPU狀態(tài)分析圖,調(diào)用go tool pprof http://localhost:3999/debug/pprof/profile

就會進(jìn)入30秒的profile收集時間,在這段事件內(nèi)猛刷新點(diǎn)擊go-tour瀏覽器上的頁面,盡量讓cpu占用性能產(chǎn)生數(shù)據(jù)。

(pprof) top10

Total: 3 samples

       1 33.3% 33.3% 1 33.3% MHeap_AllocLocked

       1 33.3% 66.7% 1 33.3% os/exec.(*Cmd).closeDescriptors

       1 33.3% 100.0% 1 33.3% runtime.sigprocmask

       0 0.0% 100.0% 1 33.3% MCentral_Grow

       0 0.0% 100.0% 2 66.7% main.Compile

       0 0.0% 100.0% 2 66.7% main.compile

       0 0.0% 100.0% 2 66.7% main.run

       0 0.0% 100.0% 1 33.3% makeslice1

       0 0.0% 100.0% 2 66.7% net/http.(*ServeMux).ServeHTTP

       0 0.0% 100.0% 2 66.7% net/http.(*conn).serve

 

(pprof)web

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
高性能 Go 的 6 個技巧 — Go 高級主題
google perftools分析程序性能
golang 內(nèi)存分析/動態(tài)追蹤
盤點(diǎn)Go中的開發(fā)神器
Java Runtime.exec()注意事項(xiàng)
關(guān)于cache性能優(yōu)化
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服