前言
性能测试的分析优是一个简单而有复杂的过程,说它简单,是因为性能分析的思路无外乎自顶向下和自下而上,说它复杂是因为在性能分析的过程中会涉及到方方面面的知识,需要分析人员对操作系统、常用开源组件、测试思想、源代码都有比较深入的了解和掌握。例如对于一个nginx反向代理的服务器集群,当你发现事务响应时间变长,但是应用和数据库的CPU、内存占用都很低,你是否能想到时nginx这个节点出了问题,是否会想到从nginx配置和服务器的配置两方面入手,是否能直接想到是服务器未设置ulimit值?这其实就是经验。性能分析人员需要有一个比较宽广的视角和知识交叉领域。
性能分析方法
性能测试分析不管采用什么方法,核心活动都是生成负载、监控服务器性能指标、找到系统的瓶颈点。刚才说有自上而下和自下而上两种思路。两种思路没有优劣之分。
自上而下
将整个系统按照访问顺序的先后,可以将系统划分为不同的层次,从用户操作所接触的UI层开始,UI会将请求发送给后端服务,然后接受从后端服务返回的报文,这是HTTP事务响应时间,HTTP响应时间组成又可以拆分为网络传输、JVM处理时间、数据库时间等,就像这样从外向内一层一层的分析系统的平静点。
自下而上
自下而上的方法,直接从系统的底层开始排查,通过监控底层的操作系统、硬件、网络等来分析性能问题。
一般性能分析过程
- 检查事务响应时间,过滤明显的性能瓶颈
- 检查负载机资源消耗,排除测试环境对测试结果的影响
- 检查web服务器资源下号,
- 检查应用服务器资源消耗
- 检查数据库资源消耗
- 检查SQL性能问题;
- 检查其他组件服务,如REDIS\RABBITMQ等的资源消耗
|