Go语言第3课高质量编程| 青训营笔记

125 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记

课程资料

课堂链接

PPT

性能调优实战

源码

golang pprof 实战

↑全部操作都在这里了↑

复刻源码之后运行,保持运行状态,打开浏览器访问 http://localhost:6060/debug/pprof/,可以看到如下页面:

image.png

其中 allocs 内存分配情况的采样信息 可以用浏览器打开,但可读性不高

blocks 阻塞操作情况的采样信息 可以用浏览器打开,但可读性不高

cmdline 显示程序启动命令及参数 可以用浏览器打开,这里会显示 ./go-pprof-practice

goroutine 当前所有协程的堆栈信息 可以用浏览器打开,但可读性不高

heap 堆上内存使用情况的采样信息 可以用浏览器打开,但可读性不高

mutex 锁争用情况的采样信息 可以用浏览器打开,但可读性不高

profile CPU 占用情况的采样信息 浏览器打开会下载文件

threadcreate 系统线程创建情况的采样信息 可以用浏览器打开,但可读性不高

trace 程序运行跟踪信息 浏览器打开会下载文件,本文不涉及,可另行参阅《深入浅出 Go trace》

一些命令行参数

    go tool pprof http://localhost:6060/debug/pprof/profile    终端进入pprof
        
        top       查看使用CPU最高的参数
        
        list   进入之后查看问题具体在代码的哪一个位置
        
        web       产生一个 .svg 文件,并调用你的系统里设置的默认浏览器打开它(使用web需要下载graphviz并安装环境变量)
        
   go tool pprof http://localhost:6060/debug/pprof/goroutine  协程数

以第一个为例,运行一段时间后,终端输入 go tool pprof http://localhost:6060/debug/pprof/profile

image.png

之后会等待一段时间

image.png

看到以上信息后,浏览器打开网页http://localhost:6060/debug/pprof/

image.png

终端输入 top

list Eat

image.png

输入 web 并打开浏览器

注:需要事先在机器上安装graphviz并配置环境变量

graphviz官网 image.png

得知问题出现在tiger.go

image.png

打开后发现有个超长的循环,直接注释掉

image.png

再次运行后,重复以上操作即可