笔记3

67 阅读1分钟

性能调优有四个原则,分别是要依靠数据不是猜测,要定位最大瓶颈而不是细枝末节,不要过早优化,不要过度优化。 说到性能优化,就不得不使用性能分析工具了,而pprof就是一个很好用的golang性能分析工具。 pprof输入特定命令,才能采集相关服务性能数据,其中flat表示当前函数本身的执行耗时,flat%是flat占CPU总时间的比例,sum%是上面每一行flat%的总和,cum表示当前函数本身加上其调用函数的总耗时,cum%则是cum占CPU总时间的比例。 当flat==cum,表明当前没有调用其他函数,CPU的消耗都是因为我本身运行所导致的。flat==0则相反,函数中只有其他函数的调用。 找到消耗较大的点后,就可以用list定位到消耗较大的那行代码,再对其进行分析寻找繁琐的地方。 另外,还能使用用命令web查看调用关系图,因为是可视化视图,所以会更容易让人理解。加入heap可以在可视图力看到内存的使用现状。 在goroutine中,如若gorotine数量太多,就会导致CPU占用过多,对一部分代码进行注释,就能使得协程数量降下来。 同理,阻塞和锁遇到类似问题也是用的相似的解决办法,寻找异常点,定位异常代码,再用合适的方法对其进行修改。