真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Go語言的性能分析工具pprof怎么用

今天就跟大家聊聊有關(guān)Go語言的性能分析工具pprof怎么用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

公司主營業(yè)務(wù):網(wǎng)站設(shè)計、網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出資源免費做網(wǎng)站回饋大家。

一、pprof的概述:

pprof:是Go的性能分析工具,在程序運行過程中,可以記錄程序的運行信息,可以是CPU使用情況、內(nèi)存使用情況、goroutine運行情況等,Go語言已經(jīng)將pprof 封裝在包net/http/pprof中。

對于pprof來說主要用于:CPU分析、內(nèi)存分析、阻塞分析、互斥鎖分析。

查看這些指標(biāo)有兩種方式,一種是瀏覽器方式,一種是命令行方式。

瀏覽器方式:

通過 http://pprofIPAddress:port/debug/pprof/ 來訪問,訪問之后的界面如下所示:

Go語言的性能分析工具pprof怎么用

命令行方式:

基本命令:

# 下載cpu profile,默認(rèn)從當(dāng)前開始收集30s的cpu使用情況,需要等待30sgo tool pprof http://localhost:6060/debug/pprof/profile# 30-second CPU profile go tool pprof http://localhost:6060/debug/pprof/profile?seconds=120# wait 120s# 下載heap profile go tool pprof http://localhost:6060/debug/pprof/heap# heap profile# 下載goroutine profile go tool pprof http://localhost:6060/debug/pprof/goroutine# goroutine profile# 下載block profile go tool pprof http://localhost:6060/debug/pprof/block# goroutine blocking profile# 下載mutex profile go tool pprof http://localhost:6060/debug/pprof/mutex

本篇文章算是pprof的入門篇章,主要講解CPU分析和內(nèi)存分析兩部分的使用方法。

二、內(nèi)存分析:

這里的內(nèi)存指的是Go中的堆數(shù)據(jù),例子如下所示:

package mainimport (    "fmt"    "time"    "sync"    "net/http"    _ "net/http/pprof")
var buf []bytefunc Add() {    tick := time.Tick(time.Second / 200)    for range tick {        buf = append(buf, make([]byte, 2*1024*1024)...)    }}func main() {    // 開啟pprof,監(jiān)聽請求    var wg sync.WaitGroup    wg.Add(1)    go func() {        defer wg.Done()        ip := "0.0.0.0:6060"        if err := http.ListenAndServe(ip, nil); err != nil {            fmt.Printf("start pprof failed on %s\n", ip)        }    }()    fmt.Println("continue~")    Add()    wg.Wait()}

通常分析內(nèi)存信息,需要使用go tool pprof http://localhost:6060/debug/pprof/heap,一般采樣多次進(jìn)行比較,看內(nèi)存的變化。而查看內(nèi)存信息,主要用到pprof中的三個命令top、list 和traces, 如下所示:

step 1: 生成兩個內(nèi)存分析文件,這兩個時間間隔取決于自己的需要,本例間隔差不多1分30秒。

Go語言的性能分析工具pprof怎么用

step 2: 比較兩個內(nèi)存文件中的區(qū)別。

$go tool pprof -base ~/pprof/pprof.alloc_objects.alloc_space.inuse_objects.inuse_space.001.pb.gz ~/pprof/pprof.alloc_objects.alloc_space.inuse_objects.inuse_space.002.pb.gz

-base:表示的是以第一個內(nèi)存文件作為比較樣本。

Go語言的性能分析工具pprof怎么用

step 3: 分析內(nèi)存信息。

通過top、list和traces來查看內(nèi)存信息。通過下面的執(zhí)行結(jié)果,我們可以看出來,mian.Add函數(shù)使用的內(nèi)存最多,而在Add中14行的buf = append(buf,make([]byte),2*1024*1024)是新增內(nèi)存的來源。

對于traces來講,.........之間表示的是一個堆棧的調(diào)用關(guān)系。

備注:對于float、cum的介紹如下所示:

cum          Sort entries based on cumulative weight

 flat            Sort entries based on own weight

三、CPU分析:

對于CPU的使用分析要比內(nèi)存簡單一些,畢竟CPU不需要分成幾塊進(jìn)行比較,分析步驟如下:

step 1: 采集cpu數(shù)據(jù)信息。

命令:$ go tool pprof http://localhost:6060/debug/pprof/profile

Go語言的性能分析工具pprof怎么用

step 2: 分析CPU信息。

通過top、list、traces來進(jìn)一步進(jìn)行分析CPU的熱點。

top和list 來查看cpu的使用時間:

Go語言的性能分析工具pprof怎么用

traces分析:

Go語言的性能分析工具pprof怎么用

看完上述內(nèi)容,你們對Go語言的性能分析工具pprof怎么用有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


當(dāng)前文章:Go語言的性能分析工具pprof怎么用
地址分享:http://weahome.cn/article/gdegcd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部