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

溫馨提示×

溫馨提示×

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

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

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

發布時間:2021-11-20 09:44:15 來源:億速云 閱讀:248 作者:柒染 欄目:大數據

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

一、pprof的概述:

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

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

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

瀏覽器方式:

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

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

命令行方式:

基本命令:

# 下載cpu profile,默認從當前開始收集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分析和內存分析兩部分的使用方法。

二、內存分析:

這里的內存指的是Go中的堆數據,例子如下所示:

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,監聽請求    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()}

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

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

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

step 2: 比較兩個內存文件中的區別。

$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:表示的是以第一個內存文件作為比較樣本。

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

step 3: 分析內存信息。

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

對于traces來講,.........之間表示的是一個堆棧的調用關系。

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

cum          Sort entries based on cumulative weight

 flat            Sort entries based on own weight

三、CPU分析:

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

step 1: 采集cpu數據信息。

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

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

step 2: 分析CPU信息。

通過top、list、traces來進一步進行分析CPU的熱點。

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

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

traces分析:

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

看完上述內容,你們對Go語言的性能分析工具pprof怎么用有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

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

AI

玉环县| 甘泉县| 兰西县| 贵州省| 元江| 蒲城县| 东兴市| 雷州市| 峡江县| 磐安县| 延安市| 靖安县| 托里县| 民县| 大城县| 正阳县| 耿马| 张北县| 武夷山市| 砚山县| 犍为县| 太原市| 霸州市| 通州市| 赤壁市| 确山县| 辉县市| 招远市| 邹城市| 浏阳市| 枣庄市| 杭锦后旗| 平乡县| 三都| 南宁市| 荥阳市| 庆阳市| 五大连池市| 惠水县| 沙雅县| 泰州市|