常见的性能问题
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
相关推荐
性能测试工程师基本上都能够掌握利用测试工具来做负载、压力测试,但多数人对怎样去分析工具收集到的测试结果感到无从下手,下面我就把个人工作中的体会和收集到的有关资料整理出来,希望能对大家分析测试结果有所...
性能测试的一些概念问题 性能测试的一些脚本问题 性能测试的一些场景说明 性能测试的结果分析说明
本次XXX项目性能测试总结编写目的,在于对性能测试实施的过程及结果进行分析,以总结性能测试方面的经验与不足,为其它项目规范实施性能测试提供参考标准。预期参考人员包括测试人员、测试部门经理、项目管理人员、...
第5章 性能测试的组织 5.1性能测试团队的人员构成 5.2性能测试的过程模型 5.2.1测试前期准备 5.2.2测试工具引入 5.2.3测试计划 5.2.4测试设计与开发 5.2.5测试执行与管理 5.2.6测试分析 5.3本章小结 第二部分 ...
关于性能测试经验总结,其中包括测试计划、测试脚本生成、如何建立场景、如何运行场景、如何监视场景、最后分析测试结果等内容
web项目测试实战性能测试结果分析样章.doc XX性能测试报告.pdf XX性能测试计划.xls 成功的 Web 应用系统性能测试.doc 存储转发机制优化系统测试方案及案例.doc 软件性能测试从这里开始V1[1].0.0.0.pdf 系统性能测试...
loadrunner性能测试学习总结,包括入门,性能测试计划,脚本录制,测试过程,结果分析等
1.性能测试的指标 2.通过各项性能指标对性能瓶颈的定位 3.性能调优 4.错误总结
性能瓶颈分析及案例总结
loadrunner测试,遇到瓶颈时案例分析与优化,分析loadrunner
第3章进一步讨论了如何在项目中进行性能测试需求分析、设计与实施性能测试,并深入讨论了基于场景设计性能测试用例的方法。第4章则介绍了针对Web应用程序进行性能分析的基本方法。第5章是案例部分,分别以银行卡、...
性能测试,数据分析,测试总结
很多刚刚入门的人对性能测试结果的分析都很迷茫,不知道如何入手,本文即本人总结的一些新人对性能测试结果曲线分析的切入点,当然,因为本人的水平也有限,所以难保全部正确,也希望同行指正批评。
针对互联网行业中如何做性能测试进行结果分析进行总结的笔记,里面包含性能测试结果分析的指标和实际工作中一些实例分析
web项目测试实战性能测试结果分析样章.doc XX性能测试报告.pdf XX性能测试计划.xls 成功的 Web 应用系统性能测试.doc 存储转发机制优化系统测试方案及案例.doc 软件性能测试从这里开始V1[1].0.0.0.pdf 系统...
第一步:需求分析、计划测试,设计测试用例 第二步:测试设计和开发(测试脚本录制及调试,测试场景设计) 第三步:测试执行(测试环境搭建,场景部署,场景执行...第四步:测试结果分析,性能问题定位,测试报告评估
11.2 案例实践--性能测试第一阶段Ajax页面基准性能分析 298 11.2.1 页面基准分析目标 298 11.2.2 分析所使用的工具 299 11.2.3 术语揭示 299 11.2.4 基准测试案例设计及运行 300 11.2.5 结果分析 305 11.2.6 优化...
[17个软件测试文档]-8性能测试经验总结 http://download.csdn.net/detail/cleopard/8344017 [17个软件测试文档]-7存储转发机制优化系统测试方案及案例 http://download.csdn.net/detail/cleopard/8343997 [17个软件...