软件性能测试与调优指南 下载本文

6.2.2 常用监控指标

常用监控指标

提示:详细参阅 附录4:常用监控指标

6.2.3 执行性能测试基本原则

执行性能测试基本原则

提示:详细参阅 附录1:执行性能测试基本原则

6.3. 分析测试结果

6.3.1 分析测试结果

根据测试记录,进行性能分析、错误分析 性能分析

高峰负载时,多用户并发进行典型业务操作的稳定性; 高峰负载时,用户操作响应时间;

数据库增量,对用户操作响应时间的影响。

常见错误

内存泄漏(Memory leak)

并发与同步(Concurrency and Synchronization) 通讯连接 数据库连接

6.3.2 性能问题分析原则

性能问题分析原则

提示:详细参阅 附录2:性能问题分析原则

6.3.3 常见性能问题及成因

常见性能问题及成因

提示:详细参阅 附录3:常见性能问题及成因

软件性能测试与调优指南 Page 13 of 36

6.3.4典型性能问题的诊断

典型性能问题的诊断

提示:详细参阅 附录5:如何诊断数据库的性能问题

6.3.5性能问题分析示例

下面是一个性能问题分析的示例

性能问题

应用程序在负载下越来越慢,一旦消除负载,系统就冷却下来恢复原状,没有后遗症。

见下表七。

表七:性能问题症状

负载(用户数) 10 50 100 150

性能问题分析

示例: 下面是引发性能问题的几个假设

几个假设

系统级问题:关键参数定义不合理;

应用级问题:

应用系统有同步阻塞;

密码鉴权时间随着用户的增加其响应时间也增加; 应用程序花大量的时间在等待另外程序返回结果; 关键应用程序的算法或SQL编写不合理。

示例: 下面是性能问题分析诊断过程,验证假设是否成立

检查应用系统日志

检查应用系统的密码鉴权时间

检查是否随着用户的增加其响应时间也增加。

检查结果:没有严重错误记录,可以排除是系统异常引起的性能问题。 检查系统的关键参数

检查WebLogic配置、数据库连接池配置、数据库关键配置。

检查结果:符合通用配置原则,可以排除是系统级问题引起的性能问题。

来回用时(毫秒) 300 471 892 1067 软件性能测试与调优指南 Page 14 of 36

检查结果:在200用户内,密码鉴权平均耗时0.02秒,可以排除是密码鉴权问题引

起的性能问题。

检查应用系统的同步阻塞

检查相关代码。

检查结果:没有同步阻塞代码,可以排除是同步阻塞问题引起的性能问题。

检查测试过程中CPU、DISKIO记录 表八:测试过程中CPU、DISKIO记录

负载 (用户数) 10 50 100 150

记录表数据可以分析出:系统不是CPU密集型的,也就是说,多数时间是花在等待上了。“等待”是性能瓶颈的原因。 那么,是什么在等待呢?有两种可能,一是内部问题,有同步阻塞程序,二是外部问题,数据库处理时间缓慢。

检查等待数据库连接的线程数及JDBC查询用时 表九:等待数据库连接的线程数及JDBC查询用时

负载(用户数) 10 50 100 150

很明显,随着用户数增加,JDBC查询用时增加,同时也引发了等待数据库连接的线程数量增加,引起性能问题恶化。

那么,是什么原因造成的?可能的原因有:

是否数据库本身慢?

软件性能测试与调优指南 Page 15 of 36

等待数据库 连接的线程数量 2 3 3 4 JDBC 查询 用时(毫秒) 58 115 489 612 来回用时 (毫秒) 300 471 892 1067 CPU 繁忙度(%) 30 33 37 41 DISKIO 繁忙度(%) 5 8 12 15

应用程序是否对数据库进行了不合理的请求? 问题出在应用程序和数据库之间的某个层上?

检查是否数据库本身慢

使用数据库专用工具查询响应时间,见下表十。 表十:数据库专用工具查询响应时间 负载(用户数) JDBC 10 50 100 150

很明显,性能瓶颈的原因是SQL语句慢。

检查SQL语句

解决方案:修改索引方案。

性能回归测试:证实性能问题消除。

性能瓶颈的原因:SQL语句(查询语句)把非索引字段和外键进行了比较。

查询计时(毫秒) 58 115 489 612 6.4. 性能调优

6.4.1 调优基本原则

提示:详细参阅附录6 调优原则

6.4.2 调优的基本步骤

提示:详细参阅附录7 调优的基本步骤

6.4.2 调优的内容

通常,与系统性能测试同步进行相应的系统性能优化,主要可以从以下几个方面入手: 提示:详细参阅文档《J2EE应用调优指南.doc》) 应用服务器调优

软件性能测试与调优指南 Page 16 of 36