/debug/pprof/block:Goroutine阻塞事件的记录。默认每发生一次阻塞事件时取样一次。
/debug/pprof/goroutines:活跃Goroutine的信息的记录。仅在获取时取样一次。
/debug/pprof/heap: 堆内存分配情况的记录。默认每分配512K字节时取样一次。
/debug/pprof/mutex: 查看争用互斥锁的持有者。
/debug/pprof/threadcreate: 系统线程创建情况的记录。 仅在获取时取样一次。
除了这些golang为我提供了更多方便的方法,用于分析,下面我们来用命令去访问详细的信息
我们用wrk来访问我们的两个方法,这样我们的服务会处在高速运行状态,取样的结果会更准确
wrk -c 20 -t 5 -d 3m http://192.168.3.34:9909/data
wrk -c 20 -t 5 -d 3m http://192.168.3.34:9909/test
分析CPU使用情况
使用命令分析CPU使用情况
go tool pprof httpdemo http://192.168.3.34:9909/debug/pprof/profile
在默认情况下,Go语言的运行时系统会以100 Hz的的频率对CPU使用情况进行取样。也就是说每秒取样100次,即每10毫秒会取样一次。为什么使用这个频率呢?因为100 Hz既足够产生有用的数据,又不至于让系统产生停顿。并且100这个数上也很容易做换算,比如把总取样计数换算为每秒的取样数。实际上,这里所说的对CPU使用情况的取样就是对当前的Goroutine的堆栈上的程序计数器的取样。
默认的取样时间是30s 你可以通过-seconds 命令来指定取样时间 。取样完成后会进入命令行状态:

可以输入help查看相关的命令.这里说几个常用的命令
top命令,输入top命令默认是返加前10的占用cpu的方法。当然人可以在命令后面加数字指定top数

list命令根据你的正则输出相关的方法.直接跟可选项o 会输出所有的方法。也可以指定方法名

如: handlerData方法占cpu的74.81%
web命令:以网页的形式展现:更直观的显示cpu的使用情况

分析内存使用情况
和分析cpu差不多使用命令
go tool pprof httpdemo http://192.168.3.34:9909/debug/pprof/heap
默认情况下取样时只取当前内存使用情况,可以加可选命令alloc_objects,将从程序开始时的内存取样
go tool pprof -alloc_objects httpdemo http://192.168.3.34:9909/debug/pprof/heap
和cpu的命令一样,top list web。不同的是这里显示的是内存使用情况而已。这里我就不演示了。









