go的profile工具

本文阅读 3 分钟
首页 golang 正文

题目序号:265

题目来源:

频次:1

答案1:(趁醉独饮痛)

官方文章

profile就是定时采样,收集cpu,内存等信息,进而给出性能优化指导。

Go 存使用采样,有四个相应的指标:

  1. inuse_objects:当我们认为内存中的驻留对象过多时,就会关注该指标
  2. inuse_space:当我们认为应用程序占据的 RSS 过大时,会关注该指标
  3. alloc_objects:当应用曾经发生过历史上的大量内存分配行为导致 CPU 或内存使用大幅上升时,可能关注该指标
  4. alloc_space:当应用历史上发生过内存使用大量上升时,会关注该指标
//(以net/http/pprof举例)
import (
"net/http"
    _ "net/http/pprof"
)

func main(){
  err :=http.ListenAndServe(":9909",nil)
  if err != nil {
     panic(err)
  }
}
类型描述
allocs所有过去内存分配的采样信息(所有对象)
blocks阻塞操作情况的采样信息(用于记录 goroutine 在等待共享资源花费的时间)
cmdline当前程序的命令行的完整调用路径goroutine,显示程序启动命令参数及其参数
goroutine显示当前所有协程的堆栈信息
heap堆上的内存分配情况的采样信息(活跃对象)
mutex锁竞争情况的采样信息
profilecpu占用情况的采样信息,点击会下载文件
threadcreate系统线程创建情况的采样信息
trace程序运行跟踪信息

注意:由于内存分析是取样方式,并且也因为其记录的是分配内存,而不是使用内存。因此使用内存性能分析工具来准确判断程序具体的内存使用是比较困难的。

得到性能数据后,可以使用top、 web、 list等命令快速定位到相应的代码处,然后进行优化。

本文来自投稿,不代表本站立场,如若转载,请注明出处:
Golang Map 如何扩容
« 上一篇 09-17
go什么场景使用接口
下一篇 » 09-17

发表评论

发表评论