这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记
课程资料
性能调优实战
↑全部操作都在这里了↑
复刻源码之后运行,保持运行状态,打开浏览器访问 http://localhost:6060/debug/pprof/,可以看到如下页面:
其中 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
之后会等待一段时间
看到以上信息后,浏览器打开网页http://localhost:6060/debug/pprof/
终端输入 top
list Eat
输入 web 并打开浏览器
注:需要事先在机器上安装graphviz并配置环境变量
得知问题出现在tiger.go
打开后发现有个超长的循环,直接注释掉
再次运行后,重复以上操作即可