前言
转眼间时间已经过了一大半,一个暑假就已经没多少了,大项目大家都做的如火如荼,群里面讨论的那可是风生水起,大家都是来自各个地方,有本科的,研究生的,还有各个学历的,略略略~~~ ,怎么说了这么多废话,其实这些都不是本篇文章的中心思想,下面就开始正片吧。今天写的是在优化Go语言程序方面的一些心得
历程及心得
一开始就是跟着老师以及视频介绍的可视化分析工具pprof敲着代码,这里是用的github的一个炸弹代码,里面有很多占用CPU以及内存资源的无用代码,需要我们一个个去排查。这时候就要用到pprof工具,这玩意可以在控制台使用,也可以监听本地端口在浏览器可视化,不过需要注意的是要下graphX包,不然就会报错,我一开始就陷入这个错误,不过可视化还是挺香的,部分代码如下:
go tool pprof "http://localhost:6060/debug/pprof/profile?seconds=10"
这就是监听本地6060端口可视化10s的数据,如图所示,取回配置文件下载到本地,然后同时进入到pprof控制台,在这里可以通过top命令查看资源的占用情况。
接下来就是根据不同的分类排查具体的优化问题,需要注意的是这里有些实际上没有啥优化问题,本身代码就没法继续优化了,其实到企业修改项目代码也会是这样一种情况,然后pprof工具还有一种可视化方式就是比较常用的火焰图,这个比较清晰明了调用关系以及比例。
最后就是引申到企业服务优化这块上面来了,
基本概念
- 服务:能单独部署,承载一定功能的程序
- 依赖:Service A 的功能实现依赖 Service B 的响应结果,称为 Service A 依赖 Service B
- 调用链路:能支持一个接口请求的相关服务集合及其相互之间的依赖关系
- 基础库:公共的工具包、中间件
流程
- 建立服务性能评估手段
- 分析性能数据,定位性能瓶颈
- 重点优化项改造
- 优化效果验证
小结
本次笔记就是随意阐述了性能调优实战方面的一些内容,高质量编程就不用说了,就是一些变量,方法命名的问题,还有就是编程代码的一种风格,反正即使明面上摆着的一些花里胡哨的东西,没他也能运转,但是只是一个美不美观,符合不符合代码规范的问题。