性能问题主要从系统资源瓶颈和应用程序瓶颈两个角度来考虑:
系统资源瓶颈
资源分类
硬件资源:CPU、内存、磁盘、文件系统、网络
软件资源:文件描述符数、连接跟踪数、套接字缓冲区大小
衡量指标
使用率、饱和度、错误数
系统资源的分析方法
CPU性能分析
CPU性能指标及其分析工具缩小排查范围,我通常会先运行几个支持指标较多的工具,top、vmstat和pidstat.
内存性能分析
衡量指标:内存使用情况(已用内存、剩余内存、共享内存、可用内存、缓存和缓冲区的用量等)、进程内存使用情况(比如进程的虚拟内存、常驻内存、共享内存以及 Swap 内存等)、缺页异常、SWAP使用情况(比如 Swap 的已用空间、剩余空间、换入速度和换出速度等)
内存性能指标 内存性能指标检测工具 最常用的内存分析工具磁盘和文件IO性能分析
磁盘和文件IO分析图谱网络性能分析
网络性能分析图谱应用程序瓶颈
瓶颈来源
资源瓶颈、依赖服务瓶颈以及应用自身的瓶颈。
资源瓶颈分析
系统资源(软硬件资源)出现瓶颈,从而导致应用程序的运行受限。
分析方法:直接采用系统资源分析方法即可。
依赖服务的瓶颈
譬如数据库、分布式缓存、中间件等应用程序,直接或者间接调用的服务出现性能问题,从而导致用于程序的运行受限。
分析方法:使用全链路跟踪系统。
应用程序自身的瓶颈
譬如多线程处理不当,死锁,业务算法的复杂度过高等。
分析方法:通过系统调用、热点函数或应用自身的的指标监控与日志监控,观察关键环节的耗时和内部执行过程中的错误。
两者的关联性
系统资源和应用程序本来就是相互影响、相辅相成的一个整体。系统是应用的运行环境,系统的瓶颈会导致应用的性能下降;而应用的不合理设计,也会引发系统资源的瓶颈。实际上,很多资源瓶颈,也是应用程序自身运行导致的。比如进程的聂村泄露,会导致系统的内存不足;进程过多的IO请求,会拖慢整个系统的IO请求等。所以很多情况下,资源瓶颈和应用自身的瓶颈,其实是同一个问题导致,并不需要我们重复分析。
网友评论