简介
  1. golang天生支持异步,并行等特性,用起来是真香,但太灵活同时赋予你能力太强,导致的结果导向就是你要不能做成更大的事情,要不犯更大的错误。
  2. 因为我们正在做的可能是一个很大的服务提供者干的事情,所以可能我们在完成任务的同时还的注重程序运行得更效率,更稳定。
  3. golang强类型加编译语言 + 原生就有一个test包方式去检查我们的每一个方法执行是否能通过以及效率,可以说已经可以很大程度上帮助我们避免错误(相对php动态解释型),但是还有更牛叉的包能帮我分析我们代码在执行过程中,精确到每一个函数的耗时,耗内存,耗cpu等等详细数据信息展示,pprof 闪亮登场。

工具安装

工具使用介绍一 火焰图有依赖
工具使用介绍二 火焰图展示不依赖

内容:

上面的文章看看明白pprof这个工具都能干些什么,新的东西刚看起来可能会有点晕,试试这么理解,其实我们用这个工具的目的是为了获取我们程序执行过程种的是否健康,这年代数据说话,那么搞明白证明一个程序是否正常的数据无疑,cpu占用,内存使用,各代码片段执行时间(效率),如果你能程序又不很耗cpu,内存占用也不大,吞吐率还超高,稳定,那么无疑就是一个健壮的程序了(只要你没有别的恶意破坏),重点来了,怎么获取我们想要的数据便是我们使用好pprof这个工具的目的了,没错它能很炫的帮我们提供数据加很好的展示。

安装命令:
go get -u github.com/google/pprof    //最烦各种依赖了,网上的其他方式(介绍一种说的就是依赖方式开火焰图),
要依赖其他工具才能使用火焰图,而它我反正一装就能使用,不依赖

demo(code也是一种表单方式)

image.png

现在你只需要执行下面这个命令静等30S会自动弹开一个网页,在那个页面你便可以查看到刚等待的这30秒中你的程序运行的每一刻的执行细微之数据(最好在这30S你想办法让你的业务运行一下,数据就更真实了)

pprof -http 127.0.0.1:9090 http://127.0.0.1:8080/debug/pprof/profile
//当然或许你在网上还看到了各种命令,也可以获取部分数据,但是其实他们的原理都是一样的,你按我刚说的这个思路来,在这个网页上查看到的各种数据,其实网页内部就是去单独的去执行那么些命令得到的拉,linux一切皆文件,他们总是先将数据打印到一个文件中去,然后就是各种展示了

go tool pprof ./hyperkube http://172.16.3.232:10251/debug/pprof/profile
go tool pprof ./hyperkube http://172.16.3.232:10251/debug/pprof/heap  
看到没有,go tool .. 后面都接有地址,这才是数据的源头,一般都会让我们等一会,其实在这期间它就自己跑去系统那组织各种信息去了,然后再返回给我们,完全可以理解成调取了一个api,然后返回给我们数据了,只是这个数据我们不能直接查看,还是得通过它提供好得命令去查看,所以还不如一开始就用火焰图,那么对于我们行为就只有网页查看行为了,不需要记那么多命令

image.png
image.png