1.性能指标:
1.1响应时间:响应时间反映完成某个业务所需要的时间。
在性能测试中是通过事务函数来完成对响应时间的统计,事务是指做某件事情的操作,事务函数会记录开始做这件事情和该事情做完之间的时间差,使用transaction response time这个词来说明,也称为事务响应时间。
1.2吞吐量:吞吐量反映单位时间内能够处理的事务数目。
在性能测试工具中,吞吐量也被称为TPS(transaction per second,每秒事务数)也就是说在单位时间内能完成的事务数目。TPS的计算一般是通过的事务数除以时间。
1.3服务器资源占用:服务器资源占用反映在负载下系统的资源利用率。资源的占用率越低,说明系统越优秀。资源并不仅仅指运行系统的硬件,而是支持整个系统运行程序的一切软硬件平台。
对于一个系统而言,需要尽可能保证每一个操作的响应时间在5秒以内。
2.单机与网络性能测试:
2.1针对单机软件性能测试需要关注的目标一般为:
(1)业务处理的时间
(2)是否存在内存泄漏?有没有申请一些没必要的资源?资源的释放是否完全?
(3)最低或者建议的配置如何,给出推荐值。
可使用QTP或者rational purify来进行测试。
2.2针对网络架构的软件性能测试需要关注的目标一般为:
(1)系统的最大处理能力
(2)系统在各个负载情况下的处理能力
(3)系统能否进一步调优
3.性能测试的流程
step1通过需求分析得到性能测试需求
step2选择性能测试工具,在进行性能测试前要对性能测试工具进行可行性分析
step3设计性能测试,包括性能测试脚本的开发、负载的生成规则及监控方式、测试环境的搭建等
step4进行负载,在负载过程中和负载后要对相关数据进行分析,找出数据背后的问题,确定性能瓶颈
step5确定瓶颈后,进行软硬件方面的调优工作,调优完成后,重新进行前面的步骤,确认调优的效果是否达到了预期目标
4.性能分析与调优原理
性能测试的目的是评估当前系统性能指标,分析定位解决性能瓶颈,预防规避性能风险。
性能分析是为了确定导致性能瓶颈的原因,而调优就是用来解决性能瓶颈。
4.1性能分析的方法如下:
(1)指标达成法
将性能测试结果与用户需求比较,如果达到用户需要则测试通过。
(2)最优化分析法
通过分析并消除系统性能瓶颈,使系统的处理能力最大化,系统资源实现充分利用。
4.2性能调优方法
(1)应用程序诊断
应用程序诊断是性能测试的最初目的。通过模拟多用户操作形成负载,检查应用程序是否能够满足用户的性能需求,如不能满足,则定位应用瓶颈,并寻找解决瓶颈的方法,确保系统在修正后能够满足用户需求。
(2)系统调优
在系统调优中最基本的目标是为了满足用户,而进一步的要求是超越自己,需要做的是让系统比以前更加优秀的运行。通过生成负载,对测试结果进行分析,并且准备大量的软硬件环境进行迭代测试,找出影响性能的要素,最终提升系统的性能。
4.3常见系统性能瓶颈
(1)硬件上的性能瓶颈
一般指CPU、RAM方面的问题,分为服务器硬件瓶颈、网络瓶颈、服务器操作系统瓶颈(参数配置)、中间件瓶颈(参数配置、数据库、Web服务器等)、应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等)。
(2)应用软件上的性能瓶颈
一般指的是应用服务器、Web服务器等应用软件,还包括数据库系统。
(3)应用程序上的性能瓶颈
一般指的是开发人员新开发出来的程序。
(4)操作系统上的性能瓶颈
一般指的是windows、UNIX、Linux等操作系统。
(5)网络设备上的性能瓶颈
一般指的是防火墙、动态负载均衡器、交换机等设备。
4.4一般性能问题调优步骤
step1确定问题
1)应用程序代码:对于发现瓶颈的模块,首先应该检查一下代码。
2)数据库配置:经常引起整个系统运行缓慢,一些诸如Oracle的大型数据库都是要DBA进行正确的参数配置才能投产的。
3)操作系统配置 :不合理就可能引起系统瓶颈。
4)硬件设置:硬盘速度、内存大小等都是容易引起瓶颈的原因,因此都是分析的重点。
5)网络:网络负载过重导致网络冲突和网络延迟。
step2确定原因
step3确定调整目标和解决方案。
提高系统吞吐量,缩短响应时间,更好地支持并发。
step4测试解决方案
对通过解决方案调优后的系统进行基准测试。
step5分析调优结果
系统调优是否达到或者超出了预定目标?系统是整体性能得到了改善,还是以牺牲某部分性能来解决其他问题。调优是否可以结束。如果达到预期目标,调优就可以结束了。
4.5性能问题分析原则
原则1:把事实和推测分开,总是用实际的证据来证明推测。
原则2:在没有足够证据之前不对程序进行优化。
原则3:优先验证简单的假设。
原则4:日志文件中没有错误,不代表真的没有错误。
原则5:从系统到应用、从外到内进行层层剥离,缩小范围。确认是系统级问题还是应用级问题;确认是否为外部系统问题(如密码鉴权问题、EJB问题等);确定是应用程序问题还是数据库问题。
原则6:缩小范围后,再分割成多个小单元,对每个小单元反复进行严厉测试,来确定是哪个单元引起性能问题。
4.6性能调优应该注意的要点
要点1:在应用系统设计和开发中,始终把性能放在考虑的范围内;
要点2:确定清晰明确的性能目标是关键;
要点3:必须保证调优后的程序运行正确;
要点4:系统的性能更大程度上取决于良好的设计,调优技巧只是一个辅助手段;
要点5:调优过程是迭代渐进的过程,每次调优的结果都要反馈到后续的代码开发中去;
要点6:性能调优不能以牺牲代码的可读性和可维护性为代价。