我们可以从系统资源瓶颈和应用程序瓶颈,这两个角度来分析性能问题的根源。
从系统资源瓶颈的角度来说,USE法是最为有效的方法,即从使用率、饱和度以及错误数这三个方面,来分析 CPU、内存、磁盘和文件系统 I/O、网络以及内核资源限制等各类软硬件资源。
从应用程序瓶颈的角度来说,可以把性能问题的来源,分为资源瓶颈、依赖服务瓶颈以及应用自身的瓶颈这三类。
- 资源瓶颈的分析思路,跟系统资源瓶颈是一样的。
- 依赖服务的瓶颈,可以使用全链路跟踪系统,进行快速定位。
- 而应用自身的问题,则可以通过系统调用、热点函数,或者应用自身的指标和日志等,进行分析定位。
当然,虽然系统和应用是两个不同的角度,但在实际运行时,它们往往相辅相成、相互影响。
- 系统是应用的运行环境,系统瓶颈会导致应用的性能下降。
- 而应用程序不合理的设计,也会引发系统资源的瓶颈。
我们做性能分析,就是要结合应用程序和操作系统的原理,揪出引发问题的“真凶“。找到性能问题的来源后,整个优化工作其实也就完成了一大半,因为这些瓶颈为我们指明了优化的方向。不过,对于性能优化来说,又有哪些常见的方法呢?今天,我就带你一起来看看,性能优化的一般方法。我们也可以从系统和应用程序,这两个不同的角度来进行性能优化。
系统优化
首先来看系统的优化。USE 法可以用来分析系统软硬件资源的瓶颈,那么,相对应的优化方法,当然也是从这些资源瓶颈入手。实际上,除了最核心的系统资源瓶颈分析之外,也已经包含了这些常见资源瓶颈的优化方法。接下来,我就从 CPU性能、内存性能、磁盘和文件系统 I/O 性能以及网络性能等四个方面,带你回顾一下它们的优化方法。
CPU 优化