亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

最新版Golang?pprof使用詳解(引入、抓取、分析,圖文結(jié)合)

 更新時(shí)間:2024年08月01日 10:53:26   作者:NPE~  
這篇文章主要介紹了最新版Golang?pprof使用詳解包括引入、抓取、分析,圖文結(jié)合,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

最新版Golang pprof使用

??具體實(shí)踐:

Github地址:https://github.com/ziyifast/ziyifast-code_instruction/tree/main/go-demo/go-pprof

引入pprof:import _ “net/http/pprof”

引入pprof包,監(jiān)聽(tīng)某個(gè)端口即可

一旦服務(wù)器啟動(dòng),pprof 就開(kāi)始收集關(guān)于程序的性能數(shù)據(jù),包括 CPU 使用情況、內(nèi)存使用情況、阻塞事件、鎖競(jìng)爭(zhēng)、goroutine 和線程統(tǒng)計(jì)信息等。當(dāng)客戶端請(qǐng)求 pprof 的路由時(shí),pprof 會(huì)根據(jù)請(qǐng)求的類型提供相應(yīng)的數(shù)據(jù)

package main
import "net/http"
import _ "net/http/pprof"
func main() {
	http.ListenAndServe(":8080", nil)
	select {}
}

文字版pprof信息:

http://ip:port/debug/pprof

引入包之后,啟動(dòng)服務(wù),瀏覽器訪問(wèn)http://ip:port/debug/pprof,即可查看文字版pprof信息。

比如我本地監(jiān)控8080,我瀏覽器訪問(wèn)http://localhost:8080/debug/pprof:

圖形化查看:go tool pprof -http=“0.0.0.0:8089”

http://127.0.0.1:8080/debug/pprof/goroutine

如果覺(jué)得文字版不直觀,我們也可以本地再通過(guò)pprof工具啟一個(gè)web端口,以圖形化方式觀察:

//監(jiān)聽(tīng)遠(yuǎn)程pprof信息,并將其轉(zhuǎn)換為圖形化
//我這里拿本地127.0.0.1做演示。監(jiān)聽(tīng)遠(yuǎn)程pprof,將127.0.0.1更換為對(duì)應(yīng)ip即可
go tool pprof -http="0.0.0.0:8089"  http://127.0.0.1:8080/debug/pprof/goroutine

下載pprof信息到文件:curl -o heap.out http://IP:Port/debug/pprof/heap

//采樣pprof信息到文件,以采集heap信息為例:
//curl -o heap.out http://IP:Port/debug/pprof/heap
curl -o heap.out http://localhost:8080/debug/pprof/heap

下載pprof heap信息為heap.out文件:

直接抓取pprof信息并分析:

go tool pprof -seconds=5 http://localhost:8080/debug/pprof/profile

//采樣pprof信息并進(jìn)入pprof命令行
go tool pprof -seconds=5 http://localhost:8080/debug/pprof/profile

采集cpu信息并分析:

本地加載pprof文件:go tool pprof heap.out

//go tool pprof 文件名
go tool pprof heap.out

保存pprof為圖片:png、svg

//命令行進(jìn)入pprof
go tool pprof heap.out
//導(dǎo)出png圖片(導(dǎo)出svg,輸入svg即可)
png

top查看占用情況、list查看詳情

以獲取內(nèi)存為例:

  • flat:當(dāng)前函數(shù)分配的內(nèi)存,不包含它調(diào)用其他函數(shù)造成的內(nèi)存分配
  • flat%:當(dāng)前函數(shù)分配內(nèi)存占比
  • sum%:自己和前面所有的flat%累積值
  • cum:當(dāng)前函數(shù)及當(dāng)前函數(shù)調(diào)用其他函數(shù)的分配內(nèi)存的匯總
  • cum%:這個(gè)函數(shù)分配的內(nèi)存,以及它調(diào)用其他函數(shù)分配的內(nèi)存之和
//命令行進(jìn)入pprof
go tool pprof heap.out
//top 5,查看占用前5的函數(shù)
top 5
//list + 函數(shù)名,查看函數(shù)詳情(具體是哪個(gè)位置占用較高)
list http.HandlerFunc.ServeHTTP

參數(shù)解析

詳情請(qǐng)見(jiàn):http://chabaoo.cn/jiaoben/319016j3j.htm

allocs:內(nèi)存分配,歷史累計(jì)

allocs: A sampling of all past memory allocations【所有內(nèi)存分配,歷史累計(jì)】

block:導(dǎo)致阻塞的堆棧記錄,歷史累計(jì)

block: Stack traces that led to blocking on synchronization primitives【導(dǎo)致阻塞同步的堆棧,歷史累計(jì)】

cmdline:當(dāng)前程序命令行完整調(diào)用路徑

cmdline: The command line invocation of the current program【當(dāng)前程序命令行的完整調(diào)用路徑】

goroutine:當(dāng)前程序所有g(shù)oroutine堆棧信息,實(shí)時(shí)變化

goroutine: Stack traces of all current goroutines. Use debug=2 as a query parameter to export in the same format as an unrecovered panic.【當(dāng)前所有運(yùn)行的goroutine堆棧信息,實(shí)時(shí)變化】

heap:活動(dòng)對(duì)象內(nèi)存分配情況,實(shí)時(shí)變化

heap: A sampling of memory allocations of live objects. You can specify the gc GET parameter to run GC before taking the heap sample.【查看活動(dòng)對(duì)象的內(nèi)存分配情況,實(shí)時(shí)變化】

mutex:鎖競(jìng)爭(zhēng)記錄,歷史累計(jì)

mutex: Stack traces of holders of contended mutexes【導(dǎo)致互斥鎖競(jìng)爭(zhēng)持有者的堆棧跟蹤,歷史累計(jì)】

profile:cpu使用情況

profile: CPU profile. You can specify the duration in the seconds GET parameter. After you get the profile file, use the go tool pprof command to investigate the profile.【默認(rèn)進(jìn)行30s的CPU Profing,用于觀察CPU使用情況】

threadcreate:新線程創(chuàng)建情況

threadcreate: Stack traces that led to the creation of new OS threads【查看創(chuàng)建新OS線程的堆棧跟蹤信息】

trace:當(dāng)前程序執(zhí)行鏈路

trace: A trace of execution of the current program. You can specify the duration in the seconds GET parameter. After you get the trace file, use the go tool trace command to investigate the trace.【當(dāng)前程序執(zhí)行鏈路】

其他參數(shù) flat:當(dāng)前函數(shù)的數(shù)據(jù),不含調(diào)用其他函數(shù)

以內(nèi)存為例, flat:當(dāng)前函數(shù)分配的內(nèi)存,不包含它調(diào)用其他函數(shù)造成的內(nèi)存分配

flat%:當(dāng)前函數(shù)分配占比

例:flat%:當(dāng)前函數(shù)分配內(nèi)存占比

sum%:自己和前面所有的flat%累積值 cum:當(dāng)前函數(shù)及當(dāng)前函數(shù)調(diào)用其他函數(shù)分配總和

例: 當(dāng)前函數(shù)及當(dāng)前函數(shù)調(diào)用其他函數(shù)的分配內(nèi)存的匯總

cum%:當(dāng)前函數(shù)及當(dāng)前函數(shù)調(diào)用其他函數(shù)分配總和占比

例:這個(gè)函數(shù)分配的內(nèi)存,以及它調(diào)用其他函數(shù)分配的內(nèi)存之和

到此這篇關(guān)于最新版Golang pprof使用(引入、抓取、分析,圖文結(jié)合)的文章就介紹到這了,更多相關(guān)Golang pprof使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何使用Golang發(fā)送Get和Post請(qǐng)求

    如何使用Golang發(fā)送Get和Post請(qǐng)求

    這篇文章主要給大家介紹了關(guān)于如何使用Golang發(fā)送Get和Post請(qǐng)求的相關(guān)資料,Go語(yǔ)言(Golang)的標(biāo)準(zhǔn)庫(kù)提供了處理HTTP請(qǐng)求的功能,這使得將Go用于web應(yīng)用程序變得非常容易,需要的朋友可以參考下
    2023-06-06
  • golang 輸出重定向:fmt Log,子進(jìn)程Log,第三方庫(kù)logrus的詳解

    golang 輸出重定向:fmt Log,子進(jìn)程Log,第三方庫(kù)logrus的詳解

    這篇文章主要介紹了golang 輸出重定向:fmt Log,子進(jìn)程Log,第三方庫(kù)logrus的詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Go語(yǔ)言Grpc?Stream的實(shí)現(xiàn)

    Go語(yǔ)言Grpc?Stream的實(shí)現(xiàn)

    本文主要介紹了Go語(yǔ)言Grpc?Stream的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 淺談golang for 循環(huán)中使用協(xié)程的問(wèn)題

    淺談golang for 循環(huán)中使用協(xié)程的問(wèn)題

    這篇文章主要介紹了淺談golang for 循環(huán)中使用協(xié)程的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Go語(yǔ)言學(xué)習(xí)技巧之命名規(guī)范

    Go語(yǔ)言學(xué)習(xí)技巧之命名規(guī)范

    最近在學(xué)習(xí)go語(yǔ)言,發(fā)現(xiàn)了不少需要整理的知識(shí)點(diǎn),所以整理下分享出來(lái),下面這篇文章主要給大家介紹了關(guān)于Go語(yǔ)言學(xué)習(xí)技巧之命名規(guī)范的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-12-12
  • GoLang中生成UUID唯一標(biāo)識(shí)的實(shí)現(xiàn)方法

    GoLang中生成UUID唯一標(biāo)識(shí)的實(shí)現(xiàn)方法

    UUID是讓分散式系統(tǒng)中的所有元素,都能有唯一的辨識(shí)信息,本文主要介紹了GoLang中生成UUID唯一標(biāo)識(shí)的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • Go1.18新特性使用Generics泛型進(jìn)行流式處理

    Go1.18新特性使用Generics泛型進(jìn)行流式處理

    這篇文章主要為大家介紹了Go1.18新特性使用Generics泛型進(jìn)行流式處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 精選Golang高頻面試題和答案分享

    精選Golang高頻面試題和答案分享

    這篇文章給大家整理了17道Go語(yǔ)言中的高頻面試題和答案詳解,每道題都給出了代碼示例,方便大家更好的理解,需要的小伙伴可以收藏一下
    2023-06-06
  • Golang解析yaml文件的方法小結(jié)

    Golang解析yaml文件的方法小結(jié)

    Go 語(yǔ)言沒(méi)有內(nèi)置解析 yaml 文件的功能,實(shí)現(xiàn) yaml 的解析可以使用第三方庫(kù),下面我們就來(lái)看看如何使用opkg.in/yaml.v2 和 gopkg.in/yaml.v3實(shí)現(xiàn)解析yaml吧
    2024-11-11
  • golang利用unsafe操作未導(dǎo)出變量-Pointer使用詳解

    golang利用unsafe操作未導(dǎo)出變量-Pointer使用詳解

    這篇文章主要給大家介紹了關(guān)于golang利用unsafe操作未導(dǎo)出變量-Pointer使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08

最新評(píng)論