方法一:
使用: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图,这样就可以像我一样,在下面展示剖析结果了。
版权声明:本文为博主原创文章,未经博主允许不得转载。
有疑问加站长微信联系(非本文作者)