如何学习性能优化呢?性能优化的复杂度增加了学习难度,常见的性能优化学习包含了对系统底层只是的理解,难以深入,难以学习
而且一般程序出问题,就是直接上网查询,直接囫囵吞枣的试几次,成功了也不深究进去了,所以,相同的错误重复的犯,相同的状况重复出现
但是新能问题实际上没有那么难,只需要理解应用程序和系统几个基本原理,加上实战的联系,就可以建立起整体性能的大局观
即不需要理解每个组件的实现细节,只要能理解基本的工作原理和协作方式就可以了
那么性能指标是什么?
性能指标从应用负载的视角来看,是高并发和响应快,对应的就是吞吐和延迟
系统资源的角度来看,就是资源使用率和饱和度,
而性能问题的本质,就是系统资源达到了瓶颈,但是请求的处理还不够快,无法支撑更多的请求
性能分析,就是找到应用或者系统的瓶颈,设法避免或者缓解这个尴尬的局面
我们将性能分析的步骤总结位如下六步
1.选择指标来评估程序和系统的性能
2.应用程序和系统设置性能目标
3.性能基准测试
4.性能分析定位瓶颈
5.优化系统和应用程序
6.性能监控和告警
其次,对于性能分析和优化,我们需要建立整体系统性能的全局观
对此我们需要理解几个系统知识原理
掌握必要的性能工具
利用实际的场景演练,贯穿不同的组件
对应的性能工具的图谱,基本如下
Linux不同子系统出现问题后,使用什么工具来测试,都在上图上标记了下
比如IO系统中,我们可以使用iostat iotop blktrace等工具来分析IO瓶颈
性能工具的选择非常重要,甚至选择对了,可以大大的简化整个性能的优化过程
但是性能工具不是学习的全部,工具只是解决问题的手段,关键在于其用法
只有真正理解了背后原理,结合实际的场景,融汇贯通系统中的不同组件,才能实际的掌握
实际上,我们对于不同组件的性能测试的学习,基本如下图
最后,两个建议
系统原理很重要,但是不要太过于深入,因为深入到系统内部实现,可能会丢掉学习的重点,复杂的实现逻辑,可能会打击自己的积极性
然后多反思,多总结