1. 使用

import _ "net/http/pprof"func main() {http.ListenAndServe("0.0.0.0:6060", nil) // 启动服务
}

2. 分析

2.1 分析内存

pprof
go tool pprof http://127.0.0.1:6060/debug/pprof/heap

第二步:查看占用内存最多的一些函数信息。

然后在控制台输入

top 10

flat: 本函数占用的内存量
flat%: 本函数内存占使用内存总量的百分比
sum%: 前面每一行flat百分比的和
cum: 累计量,main函数调用了函数f,函数f占用的内存量,也会记录进来
cum%: 累计量占总量的百分比

RoundTrip

第三步

list RoundTrip

这个时候会出现更详细的代码位置

2. 分析 go runtine

pprof
go tool pprof http://127.0.0.1:6060/debug/pprof/goroutine

第二步和第三步 和 上边的基本一样。

3. 优化

github.com/panjf2000/ants