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