GoLang pprof使用(一)
来源:互联网 发布:notepad java 关键字 编辑:程序博客网 时间:2024/05/17 01:19
非web程序查看程序实时运行信息的方式,使用pprof包
启用一个监听端口 11181,可以通过网页(http://127.0.0.1:11181/)实时查看程序的运行状况 。
协程相关信息,协程开启的数量,以及协程的运行堆栈信息。
p := pprof.Lookup(“goroutine”)
Debug.go
package mainimport ( "net/http" "runtime/pprof")func goppf() { http.HandleFunc("/", handler) http.ListenAndServe(":11181", nil)}func handler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/plain") p := pprof.Lookup("goroutine") p.WriteTo(w, 1)}
main.go
package mainimport ( "time")var quit chan struct{} = make(chan struct{})func f() { <-quit}func main() { for i := 0; i < 10000; i++ { go f() } go goppf() //启用跟踪查看 for { time.Sleep(1 * time.Second) }}
网址 http://127.0.0.1:11181/ 访问结果,可查看的详细
goroutine profile: total 100101 @ 0x474c5d 0x4749f4 0x470a7c 0x40115f 0x452f48 0x4546e4 0x455071 0x452a7e 0x43fde1# 0x474c5d runtime/pprof.writeRuntimeProfile+0xdd D:/APPInstall/Go/src/runtime/pprof/pprof.go:540# 0x4749f4 runtime/pprof.writeGoroutine+0xa4 D:/APPInstall/Go/src/runtime/pprof/pprof.go:502# 0x470a7c runtime/pprof.(*Profile).WriteTo+0xdc D:/APPInstall/Go/src/runtime/pprof/pprof.go:229# 0x40115f main.handler+0xdf D:/YSHWork/GoWorkSpace/src/GoPProf/Debug.go:17# 0x452f48 net/http.HandlerFunc.ServeHTTP+0x48 D:/APPInstall/Go/src/net/http/server.go:1265# 0x4546e4 net/http.(*ServeMux).ServeHTTP+0x184 D:/APPInstall/Go/src/net/http/server.go:1541# 0x455071 net/http.serverHandler.ServeHTTP+0x1a1 D:/APPInstall/Go/src/net/http/server.go:1703# 0x452a7e net/http.(*conn).serve+0xb5e D:/APPInstall/Go/src/net/http/server.go:12041 @ 0x41528c 0x4152ff 0x41c0ac 0x401234 0x414fba 0x43fde1# 0x401234 main.main+0x74 D:/YSHWork/GoWorkSpace/src/GoPProf/main.go:20# 0x414fba runtime.main+0xfa D:/APPInstall/Go/src/runtime/proc.go:631 @ 0x41528c 0x4152ff 0x415125 0x43fde1# 0x41528c runtime.gopark+0x10c D:/APPInstall/Go/src/runtime/proc.go:131# 0x4152ff runtime.goparkunlock+0x4f D:/APPInstall/Go/src/runtime/proc.go:136# 0x415125 runtime.forcegchelper+0xd5 D:/APPInstall/Go/src/runtime/proc.go:991 @ 0x41528c 0x4152ff 0x40e9b3 0x43fde1# 0x41528c runtime.gopark+0x10c D:/APPInstall/Go/src/runtime/proc.go:131# 0x4152ff runtime.goparkunlock+0x4f D:/APPInstall/Go/src/runtime/proc.go:136# 0x40e9b3 runtime.bgsweep+0xc3 D:/APPInstall/Go/src/runtime/mgc0.go:981 @ 0x41528c 0x4152ff 0x40dfa1 0x43fde1# 0x41528c runtime.gopark+0x10c D:/APPInstall/Go/src/runtime/proc.go:131# 0x4152ff runtime.goparkunlock+0x4f D:/APPInstall/Go/src/runtime/proc.go:136# 0x40dfa1 runtime.runfinq+0xc1 D:/APPInstall/Go/src/runtime/malloc.go:72710000 @ 0x41528c 0x4152ff 0x403989 0x4034eb 0x4011b6 0x43fde1# 0x4011b6 main.f+0x46 D:/YSHWork/GoWorkSpace/src/GoPProf/main.go:101 @ 0x41528c 0x411c77 0x4110df 0x4c4eae 0x4c6175 0x4c92e7 0x4c970a 0x4de8c5 0x455ee3 0x4552e9 0x45521b 0x455821 0x401075 0x43fde1# 0x4c4eae net.(*pollDesc).Wait+0x4e D:/APPInstall/Go/src/net/fd_poll_runtime.go:84# 0x4c6175 net.(*ioSrv).ExecIO+0x305 D:/APPInstall/Go/src/net/fd_windows.go:188# 0x4c92e7 net.(*netFD).acceptOne+0x547 D:/APPInstall/Go/src/net/fd_windows.go:558# 0x4c970a net.(*netFD).accept+0x17a D:/APPInstall/Go/src/net/fd_windows.go:585# 0x4de8c5 net.(*TCPListener).AcceptTCP+0x55 D:/APPInstall/Go/src/net/tcpsock_posix.go:234# 0x455ee3 net/http.tcpKeepAliveListener.Accept+0x53 D:/APPInstall/Go/src/net/http/server.go:1976# 0x4552e9 net/http.(*Server).Serve+0x99 D:/APPInstall/Go/src/net/http/server.go:1728# 0x45521b net/http.(*Server).ListenAndServe+0x15b D:/APPInstall/Go/src/net/http/server.go:1718# 0x455821 net/http.ListenAndServe+0xc1 D:/APPInstall/Go/src/net/http/server.go:1808# 0x401075 main.goppf+0x75 D:/YSHWork/GoWorkSpace/src/GoPProf/Debug.go:101 @ 0x40c4e3 0x41c711 0x43fde1# 0x40c4e3 runtime.notetsleepg+0x93 D:/APPInstall/Go/src/runtime/lock_sema.go:267# 0x41c711 runtime.timerproc+0x101 D:/APPInstall/Go/src/runtime/time.go:2073 @ 0x41528c 0x411c77 0x4110df 0x4c4eae 0x4c6175 0x4c85a0 0x4d84c3 0x44c6b2 0x4a70d5 0x515515 0x51631e 0x516399 0x505575 0x5052c6 0x4479a2 0x44ee26 0x4525c5 0x43fde1# 0x4c4eae net.(*pollDesc).Wait+0x4e D:/APPInstall/Go/src/net/fd_poll_runtime.go:84# 0x4c6175 net.(*ioSrv).ExecIO+0x305 D:/APPInstall/Go/src/net/fd_windows.go:188# 0x4c85a0 net.(*netFD).Read+0x180 D:/APPInstall/Go/src/net/fd_windows.go:470# 0x4d84c3 net.(*conn).Read+0xe3 D:/APPInstall/Go/src/net/net.go:121# 0x44c6b2 net/http.(*liveSwitchReader).Read+0xb2 D:/APPInstall/Go/src/net/http/server.go:214# 0x4a70d5 io.(*LimitedReader).Read+0xd5 D:/APPInstall/Go/src/io/io.go:408# 0x515515 bufio.(*Reader).fill+0x1d5 D:/APPInstall/Go/src/bufio/bufio.go:97# 0x51631e bufio.(*Reader).ReadSlice+0x25e D:/APPInstall/Go/src/bufio/bufio.go:295# 0x516399 bufio.(*Reader).ReadLine+0x69 D:/APPInstall/Go/src/bufio/bufio.go:324# 0x505575 net/textproto.(*Reader).readLineSlice+0xa5 D:/APPInstall/Go/src/net/textproto/reader.go:55# 0x5052c6 net/textproto.(*Reader).ReadLine+0x56 D:/APPInstall/Go/src/net/textproto/reader.go:36# 0x4479a2 net/http.ReadRequest+0xd2 D:/APPInstall/Go/src/net/http/request.go:598# 0x44ee26 net/http.(*conn).readRequest+0x276 D:/APPInstall/Go/src/net/http/server.go:586# 0x4525c5 net/http.(*conn).serve+0x6a5 D:/APPInstall/Go/src/net/http/server.go:1162
例如
10010 个协程正在运行goroutine profile: total 10010根据提示的详细的文件行信息查找最后的执行操作<-quit 操作 一下表示10000个协程正在执行此操作信息10000 @ 0x41528c 0x4152ff 0x403989 0x4034eb 0x4011b6 0x43fde1# 0x4011b6 main.f+0x46 D:/YSHWork/GoWorkSpace/src/GoPProf/main.go:10
0 0
- GoLang pprof使用(一)
- golang pprof 使用
- golang pprof 使用
- golang pprof 使用
- Golang、pprof
- golang使用pprof检查goroutine泄露
- golang的pprof支持
- golang graphviz与pprof
- 使用golang的pprof包对程序进行性能分析
- 使用 pprof 和火焰图调试 golang 应用
- 【golang】调优工具 pprof
- [golang]pprof性能分析工具
- 为golang程序使用pprof远程查看httpserver运行堆栈,cpu耗时等信息
- pprof 的使用
- Golang性能调优(go-torch, go tool pprof)
- go使用pprof做性能分析
- go学习(九)——Go tool pprof之runtime/pprof 的使用
- Golang-interface(一 基本使用)
- 图像修复系列-1
- centos7GNOME创建桌面快捷方式
- GIT使用补充
- Ubuntu 16.04 apt-get搭建LAMP环境
- swift UISearchBarr边框闪速
- GoLang pprof使用(一)
- 2016广州国际美食节 一天卖掉两座"爬金山"
- SAP物料管理自动记帐详解
- swift 手势侧滑
- CSS笔记
- 特征工程——推荐系统里的特征工程
- iOS证书及ipa包重签名探究
- 最最最简单的C++缓存实现
- 英文符号大全