文章大纲
分析方法类型
当系统出现性能问题时,对系统进行性能分析有多种方法,这些分析方法可以归纳为以下类型:
- 观测分析
- 实验分析
- 假设分析
- 观察与实验分析
- 信息收集
- 生命周期分析
上述类型对应可能多种方法,但在使用这些方法前,尽量先进行信息收集,对应的方法为问题陈述法 。
问题陈述
当出现问题时,应首先对反映问题的团队询问以下问题来掌握更多的问题细节:
- 是什么让你觉得出现了性能问题
- 系统之前运行的情况
- 最近有无变更
- 问题是否能用具体指标进行描述
- 问题是否对其它组件或人员产生影响
- 系统信息,日志等
通过上述问题的答案可以提出合理的假设,然后进行验证。
常用的观测分析方法
以下是常用的观测分析方法,容易且高效。
核对清单法
在检查和调试系统时,核对清单中的每一项内容,确保变更或部署出现认为错误,也可以检查关键点是否与清单出现不一致的情况。使用这种方法的前提是团队需要维护好清单项,在变更或部署的时候同步好清单项。
科学分析法
科学分析法围绕着假设和实验进行分析的,通常有以下步骤:
- 问题
- 假设
- 预测
- 试验
- 分析
如果找不出问题,则重复该流程,提出新的假设。
工具法
以工具为导向的方法,主要是使用工具获取性能指标,根据指标来找出问题的方法,通常有以下流程:
- 确定使用的性能分析工具 sar perf …
- 确定使用性能分析工具提供的指标
- 收集性能指标,根据其值来确定问题
USE 方法
USE 方法可帮助快速分析系统性能,找到可能存在的性能问题或性能瓶颈。
Utilization Saturation and Errors(USE) 方法非常适合针对硬件进行快速分析系统性能,找出可能存在的性能问题或性能瓶颈。
核心理念是:
对各个独立的资源检查其错误率、利用率和饱和度
所以当硬件资源因为错误率、利用率和饱和度较高导致性能出现问题的复杂系统中是非常有效的。
USE方法使用的术语
- 资源 Resource :系统中的硬件资源(CPU、RAM、DISK、NET)。
- 利用率 Utilization :资源提供服务的平均时间,在规定的时间间隔内,资源用于服务工作的时间的百分比。
- 饱和度 Saturation :资源承担额外工作的能力,资源不能再服务更多额外工作的程度,通常有等待队列。
- 错误 Errors :错误事件的数量
指标和资源类型
对硬件资源需要找出使用率、饱和度、错误这三个指标,不同的资源对应的指标类型可能不一致。
资源 | 类型 | 指标 |
---|---|---|
CPU | 使用率 | CPU 使用率 percentage of use |
CPU | 饱和度 | 分配队列长度 queue average, load average |
内存 | 使用率 | 可用空闲内存 free capacity |
内存 | 饱和度 | swap 或者 OOM 事件 |
网络 | 使用率 | 传输和接收的吞吐量和最大带宽 throughput |
网络 | 错误 | 丢包冲突事件 packet loss, errors, collisions |
存储 | 使用率 | 设备使用率 IOPS |
存储 | 饱和度 | 等待队列长度 I/O wait time |
形成检查清单后,根据 USE 推荐的流程进行逐一检查: