Go1.5正式版程序性能分析小积累,实验环境windows64
fyxichen · · 5262 次点击 · · 开始浏览方法一:
使用:set GODEBUG=gctrace=1 / GODEBUG=gctrace=2
直接运行可执行文件:server.exe
格式:gc # @#s #%: #+...+# ms clock, #+...+# ms cpu, #->#-># MB, # MB goal, # P
GC # 表示第几次GC
@#s 表示程序开始多长时间执行的GC
#% 表示程序开始GC时间占用的百分比(percentage of time spent in GC since program start)
#+...+# 表示GC执行时CPU阻塞时间和
#->#-># MB 表示GC开始堆大小,结束堆大小,在活跃堆大小
# MB goal 表示目标对大小
# P 表示程序运行时CPU核数
示例 :
gc 13 @1277.835s 0%: 0+1.0+0+1.0+1.0 ms clock, 0+1.0+0+0/1.0/0+3.0 ms cpu, 0->0->0 MB, 4 MB goal, 4 P
方法二:
import _ "net/http/pprof"
go func() {
log.Println(http.ListenAndServe("localhost:6060", nil))
}()
在程序中添加以上代码.
-----------------------------------------------------------
使用下面的命令可以查看各项性能:
go tool pprof http://localhost:6060/debug/pprof/heap
查看30秒内的cpu使用:
go tool pprof http://localhost:6060/debug/pprof/profile
查看goroutime性能:
go tool pprof http://localhost:6060/debug/pprof/block
查看5秒的执行trace.
wget http://localhost:6060/debug/pprof/trace?seconds=5
在浏览器打开查看:
http://localhost:6060/debug/pprof/
https://blog.golang.org/2011/06/profiling-go-programs.html
命令:go tool pprof /mnt/Go/src/main http://localhost:6060/debug/pprof/heap
输入list可以看到详细情况.
输入web 可以在web页面查看
此外我们也可以运行go tool pprof your-executable-name --dot profile-filename > heap.gv,这样将得到一个heap.gv文件,我们在graphviz里面打开这个文件将得到一个更详细的包括调用关系在内的内存消耗图。当然,我们如果只需要一张图,也可以运行dot -Tpng heap.gv > heap.png将这个gv文件另存为png图,这样就可以像我一样,在下面展示剖析结果了。版权声明:本文为博主原创文章,未经博主允许不得转载。
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
方法一:
使用:set GODEBUG=gctrace=1 / GODEBUG=gctrace=2
直接运行可执行文件:server.exe
格式:gc # @#s #%: #+...+# ms clock, #+...+# ms cpu, #->#-># MB, # MB goal, # P
GC # 表示第几次GC
@#s 表示程序开始多长时间执行的GC
#% 表示程序开始GC时间占用的百分比(percentage of time spent in GC since program start)
#+...+# 表示GC执行时CPU阻塞时间和
#->#-># MB 表示GC开始堆大小,结束堆大小,在活跃堆大小
# MB goal 表示目标对大小
# P 表示程序运行时CPU核数
示例 :
gc 13 @1277.835s 0%: 0+1.0+0+1.0+1.0 ms clock, 0+1.0+0+0/1.0/0+3.0 ms cpu, 0->0->0 MB, 4 MB goal, 4 P
方法二:
import _ "net/http/pprof"
go func() {
log.Println(http.ListenAndServe("localhost:6060", nil))
}()
在程序中添加以上代码.
-----------------------------------------------------------
使用下面的命令可以查看各项性能:
go tool pprof http://localhost:6060/debug/pprof/heap
查看30秒内的cpu使用:
go tool pprof http://localhost:6060/debug/pprof/profile
查看goroutime性能:
go tool pprof http://localhost:6060/debug/pprof/block
查看5秒的执行trace.
wget http://localhost:6060/debug/pprof/trace?seconds=5
在浏览器打开查看:
http://localhost:6060/debug/pprof/
https://blog.golang.org/2011/06/profiling-go-programs.html
命令:go tool pprof /mnt/Go/src/main http://localhost:6060/debug/pprof/heap
输入list可以看到详细情况.
输入web 可以在web页面查看
此外我们也可以运行go tool pprof your-executable-name --dot profile-filename > heap.gv,这样将得到一个heap.gv文件,我们在graphviz里面打开这个文件将得到一个更详细的包括调用关系在内的内存消耗图。当然,我们如果只需要一张图,也可以运行dot -Tpng heap.gv > heap.png将这个gv文件另存为png图,这样就可以像我一样,在下面展示剖析结果了。版权声明:本文为博主原创文章,未经博主允许不得转载。