Golang pprof生成火焰图的调用关系异常原因排查
pprof火焰图出现未调用函数的异常分析问题
我用pprof采集CubeFS的cfs-server进程CPU profile,执行以下命令生成火焰图:
go tool pprof http://localhost:16220/debug/pprof/profile\?seconds\=1300 # 生成profile文件 ~/pprof/cpu.001.pb.gz go tool pprof -http :11111 ~/pprof/cpu.001.pb.gz # 启动交互式网页 wget -O flamegraph.htm http://localhost:11111/ui/flamegraph # 下载火焰图
生成的火焰图中,第二行中间的proto.(*UserPolicy).SetPerm函数下方,出现了httputil.(*ReverseProxy).getErrorHandler、httputil.(*ReverseProxy).ServeHTTP等该函数并未调用的函数。
proto.(*UserPolicy).SetPerm的源码如下:
func (policy *UserPolicy) SetPerm(volume string, perm Permission) { policy.mu.Lock() defer policy.mu.Unlock() policy.AuthorizedVols[volume] = []string{perm.String()} } // Permission类型及String方法定义 type Permission string func (p Permission) String() string { return string(p) }
该函数逻辑非常简单,并未调用火焰图中显示的那些函数,想知道这种调用关系异常是真的存在错误,还是我对火焰图的理解有误区,以及该情况的产生原因。
内容的提问来源于stack exchange,提问作者Yu-Ang Cao
相关产品推荐
相关产品推荐

