常见的性能问题
1.最重要的性能问题是应用程序设计及与数据库的交互
应用程序设计:好的应用程序设计可能会获得优秀的响应时间(但不能确保),但差的应用程序设计很难获得好的性能。差的性能设计比如:不管怎么操作,让用户检索出大量结果集(比如50M)的程序运行效率不会高,大量数据的延迟会很明显。
2.数据库设计
物理和逻辑设计,涉及非常多的方面,俺也不懂,举一个简单的例子:一个测试问题,大数据量下列表展现(多表联合查询)问题不能满足性能需求。DBA修改了数据库设计采用汇总表去展现列表(单表查询),汇总表也方便创建索引。
3.参数调整
4.硬件环境(包括网络对性能的影响会比较大)
5.其他,因素很多。
就几个常见的性能问题,举例展开,性能问题非常多,也总结不全面,但可以经常回顾,分类汇总,逐步完善性能问题总结这部分工作。
转载请保留:本文出自qaarchitech的51Testing软件测试博客:http://www.51testing.com/?170805
一、数据库交互过多
? 现象:单个操作发送给数据库sql的数据量过多,数据库延迟。
? 发现方法:采用监控工具分析程序与数据库的交互(sql数量和响应时间),比如P6spy及类似工具。
? 数据库交互与程序设计方式息息相关
建议使用P6spy帮助去做数据库交互分析,截获页面操作的sql。P6spy使用具体请参考
http://dodomail.javaeye.com/blog/117934
http://blog.csdn.net/hennylee/archive/2007/03/07/1523410.aspx
http://www.blogjava.net/itstarting/articles/48969.aspx
二、列表效率低
? 列表查询未使用索引。
? 查询全部字段,而不是所需字段,带来额外的I/O和网络负担。
? 分页算法效率低,甚至未使用分页。
1.查询未使用索引
此问题比较常见,通过查看sql的执行时间和I/O。查看查询计划可以清楚看出sql是否索引查询,或者全表扫描
select ID 。。from B where xxx
2.比如Select xxx from where UPPER(name)=‘A’
在字段上使用函数,导致不使用索引,虽然Oracle是有基于函数的索引。更好的方式 a.update现有数据 b.改程序,直接改存储模式为大写的数据。
3.冗余字段的优化
select 。。。 from A where。。。。比如where条件查询的字段的长度较大,创建索引效果后不明显,考虑增加了冗余的字段,进行标识,结合在冗余字段上创建索引会比较快。
4.分页算法,遇到的状况也比较混乱。。。。。好的分页算法要推广,公用。
三、查询结果集过大
? 返回全部的数据(建议从业务角度出发,分析返回全部的数据是否必要)
? 空查询(默认条件查询)
? 不规范的查询(where 1=1)
1.查询结果集(建议从业务角度优化系统)
建议参考淘宝的一篇帖子
http://rdc.taobao.com/blog/dba/html/187_optimize_from_business.html
2.空查询(默认查询造成压力比较大,其实空查询可能是没有必要的)
建议页面增加默认过滤条件
3.Where 1=1
a、性能上的影响(可能会影响orale的查询计划)
b、安全性的影响
create table A tablespace tbs_temp as select * from B where 11
create table A as select * from B where 11
Sybase不支持这样的语法,但是有:
select * into A from B where 1 1
where 1 1,复制表的结构,但注意这样没有主键
4.不规范的查询sql很多,建议多参考部门的相关规范,从规范的角度出发去发现问题。
四、复杂查询sql(大数据量测试)
? 复杂查询sql一定在大数据量下进行测试
? 结合操作和sql本身效率进行测试。
? 建议多与DBA配合
如果你只使用小表进行测试(比如小于100条数据),那么在真实数据下会异常缓慢直至停滞。Sql的例子就不列出了,比较多,通常对于多表联合查询,复杂的sql都要在大数据量下测试。其实越复杂的东西越难维护和优化,建议对系统中复杂的sql都记录下来,可能是性能隐患。
转载请保留:本文出自qaarchitech的51Testing软件测试博客:http://www.51testing.com/?170805
五、数据库连接池
? 未使用连接池,应用程序在建立数据库连接上消耗的时间较长,影响性能效率。
? 连接池配置参数不当(通过测试确定合适的值)
六、并发事务处理和死锁问题
? 程序对事务并发处理上的错误。
? 资源争用引起锁阻塞和死锁。
? SYBASE的锁模式为行锁,可以减小死锁发生的可能性。
死锁或者锁阻塞,如何检查锁阻塞的大致步骤
比如mysql为例子
1.Show processlist,查看有locked的进程
2.查看阻塞进程执行的sql
3.关掉程序,或者杀死进程,解掉死锁,不建议杀死进程,可能导致不完整的数据。
4.查看sql问题,单独确认问题
5.优化sql或者查程序问题
还以一个实际问题中,sybase锁阻塞的例子
环境维护发现锁阻塞,发现很慢,检查到有问题的sql
1. sp_lock看到死锁
2.查看阻塞进程信息
select * from master..sysprocesses where ipaddr =‘XXXX‘
3.造成锁阻塞的进程是spid为 1 和2的
使用dbcc traceon(3604)
dbcc sqltext(1)
dbcc sqltext(2)
查看到进程执行的sql
select * from View(视图) where ID = null(未列出原sql,仅举个例子)
4.关掉程序,杀死进程,解掉死锁
单独使用sql adv连接数据库,执行该sql,很慢。
查看创建View的语法,sybase可以使用sp_helptext View,可以看到建视图的大致的sql是
create view as select xxxx from A ,B where A.ID*=B.ID and A.C=10
查看sql的I/O和执行时间set statistics time,io on,查看到sql具体的执行时间和I/O
5.简单看了一下,试着在C字段上增加了索引
再查询响应时间变小了和查询计划变了,有问题的就是这个查看视图的sql了,可能是资源争用造成了死锁。
七、页面过大,网络延迟
? 页面中图形多且大
? 使用比较大的控件等等
? 建议参数WEB前端性能优化,推荐Yslow工具
中国雅虎有相关使用Yslow的一个很好的ppt。建议参考,帖子可以看看,推荐《高性能网站建设指南》http://www.cnblogs.com/JustinYoung/archive/2007/11/20/speeding-up-web-site-14rule.html
http://www.cnblogs.com/JustinYoung/archive/2007/11/28/speeding-up-web-site-yslow.html
八、内存溢出、应用终止、服务器宕机等严重问题
? 批量对数据进行操作,会返回大量数据给应用服务器占用了较多的应用服务器的内存,可能会导致应用服务器内存溢出。
? 消耗服务器某种资源过多的操作可能会使服务器出现宕机和应用终止的情况。
? 检查应用程序日志和操作系统的日志或者core文件
九、参数调整和日志级别设置
服务器的参数调整不合理。完善性能环境检查的各种checklist。
生产环境中日志级别应当设置的较高,不打印出sql语句和调试信息,额外的I/O会降低性能效率。[/size]
原文:http://www.testroad.net/bbs/dispbbs.asp?boardid=16&Id=485&page=4
相关推荐
总结,性能测试诊断分析与优化是一个涉及多方面知识的复杂过程,需要对系统架构、编程语言、数据库、网络等方面有深入理解。通过有效的测试和持续的优化,我们可以确保系统的高效稳定运行,为用户提供优质的服务。
性能测试结果分析是性能测试工程师的关键技能之一,它涉及到如何理解和解释测试工具收集的数据,以确定系统的性能瓶颈和优化方向。下面将详细讨论这个主题。 首先,分析性能测试结果时,需要遵循一定的原则。具体...
### 《软件性能测试、分析与调优实践之路-第二版》PPT课件总结 #### 一、软件性能测试的重要性及目标 1. **理解系统性能指标**: - **并发访问量**:评估系统在高并发环境下的承载能力。 - **平均响应时间**:...
总结,性能测试诊断分析与优化是提升系统质量的关键环节,涵盖了测试工具的选择、测试策略的制定、问题的定位与解决等多个方面。2012年的相关研究和实践为我们提供了丰富的经验,这些知识至今仍然具有很高的参考价值...
### 性能测试关键知识点解析 #### 一、性能测试基本概念 性能测试是一种软件测试类型,用于评估系统的性能水平,比如响应时间和资源利用率等,确保系统能够在预期的工作负载下正常运行。 - **响应时间(RT)**:...
总结来说,性能测试结果分析涵盖了并发用户数估算、测试方法选择、性能指标解读以及业务场景的适应性等多个方面,通过这些分析,我们可以全面地评估系统在高负载环境下的表现,为系统优化提供依据。
【性能测试问题点总结及分析定位】 性能测试是评估软件系统在特定负载和压力下的表现,包括系统的响应时间、吞吐量、并发处理能力等关键指标。以下是对性能测试涉及的一些核心概念、脚本问题、场景设计以及结果分析...
书中也对性能测试的应用领域进行了分析,指出了性能测试在能力验证、规划能力、性能调优、发现缺陷等方面的重要作用,并总结了性能测试的最终目标。 在性能计数器及性能分析方法这一章节中,作者详细讨论了操作系统...
2. 修改Cache容量,观察失效次数的变化,分析容量与性能的关系。 3. 改变Cache的相联度,研究其对性能的影响。 4. 调整Cache块大小,统计失效次数,探讨块大小与性能的联系。 5. 比较LRU和随机法在不同Cache配置下的...
LoadRunner 性能测试学习总结 LoadRunner 是一种功能强大的性能测试工具,旨在帮助开发者和测试者对应用程序进行性能测试和优化。 LoadRunner 的主要功能包括虚拟用户生成、负载测试、事务测试、结果分析等。 为...
以下是对性能测试经验的详细总结,涵盖了从计划测试到分析结果的整个过程。 第一步:计划测试 在开始性能测试之前,首先要明确测试的目标和压力点,即确定系统在哪些功能或操作下可能会面临性能瓶颈。设计多种场景...
### LoadRunner性能测试结果分析...以上就是基于给定文件信息中的知识点总结,这些分析方法和指标对于进行性能测试结果分析非常关键。通过对这些指标的深入理解和运用,可以有效地评估系统的性能并发现潜在的问题点。
Web模型与性能测试的研究分析: Web的起源与发展: Web是互联网上的一种应用,它起源于1989年,由英国科学家蒂姆·伯纳斯-李提出。Web的发展经历了多个阶段,从最初简单的文档分享,到如今包括多媒体交互、社交网络...
本次XXX项目性能测试总结编写目的,在于对性能测试实施的过程及结果进行分析,以总结性能测试方面的经验与不足,为其它项目规范实施性能测试提供参考标准。预期参考人员包括测试人员、测试部门经理、项目管理人员、...
### 大型系统的性能测试与分析 #### 一、引言 随着信息技术的快速发展,企业和组织对于信息系统的要求越来越高,特别是对于那些需要处理大量并发请求、高频交易的应用系统来说,其性能好坏直接影响到用户体验和...
通过对SAP性能测试报告的获取方法及其数据分析的详细介绍,我们可以清晰地了解到整个性能测试流程的重要性以及如何利用报告中的数据来识别和解决性能问题。这对于提升SAP系统的整体性能具有非常重要的意义。在实际...
【性能测试分析报告案例】 在IT行业中,性能测试是评估软件系统在高负载或大量并发用户情况下的稳定性和效率的关键步骤。本报告是针对****公司****管理系统的性能测试分析,旨在提供一个详细的参考实例,帮助读者...
### 第一次性能测试后的经验总结 #### 一、性能测试流程方面 在进行性能测试之前,需要对业务流程有深入的了解,明确测试的目的和范围。对于初次接触性能测试的人来说,以下几点尤为重要: 1. **熟悉业务流程**:...