浅析网络应用系统性能优化测试
2014-09-19孔留彦
孔留彦 刘 新 凌 朗
(广东评测中心 广东 510663)
1 网络应用系统特点及问题
1.1 应用系统特点
网络应用系统使用越来越普遍,基本涉及到各行各业,随着网络应用系统使用的普及,网络应用系统逐渐呈显以下特点:
图1 网络应用特点
1.2 常见观测性能问题的现象
网络应用系统性能常见性问题如下描述:
(1)系统响应速度太慢,加载时间过长。
(2)每秒所完成的系统输出/入低于预期,用户量大时导致系统错误。
(3)服务器系统资源(如CPU、内存、硬盘或网络等)长时间处于高位占用的状态。
图2 网络应用系统常见问题
1.3 网络应用系统调优
根据网络应用系统应用的现状和特点,针对网络应用系统的性能问题,明确用户的性能需求,通过全面的性能测试进行分析定位,采集相关的性能测试数据,根据用户的性能需求以及行业的一般性性能准则要求对采集的数据进行分析,并提出相应的性能调优建议,优化系统性能,提升用户的应用体验效果。
图3 性能调优流程图
2 性能优化设计与方法
性能测试可以由浅入深按照层次对系统进行测试,既能清晰定位性能瓶颈,又能提高测试的效率。
常规可根据测试目标、历史数据分析、参考历史项目或其它同行业的项目和其他项目资料数据获取相关测试信息,选择测试方法。常见测试方法与对应的测试目标与策略如下:
2.1 负载测试(Load Testing)
(1)Load Testing 是指模拟真实的用户核心业务模块操作行为,通过不断加压直到性能出现瓶颈或资源达到饱和。负载测试是我们最经常进行的性能测试,用于测量系统的容量,发现系统瓶颈并配合性能调优。
(2)测试策略:主要验证服务器在持续加压过程中,各加压点服务器健康状况。目的是找出最佳并发点、最大并发点以及系统所能承受的最大性能瓶颈点。
2.2 压力测试(Stress Testing)
(1)Stress Testing 是指测试系统在一定的饱和状态下系统的处理能力。负载测试的不断加压到一定阶段即是压力测试,两者没有明确的界限。
那么“骑卒死亡者八九百人”事件的具体时间发生在何时?《朝鲜实录》世宗十七年二月丙寅(1435年3月23日),咸吉道兵马都节制使抄写李满住、凡察处皇帝敕书二道以送。其敕谕凡察曰:“尔差指挥使李张家等来奏,杨木答兀引领野人来厮杀情由,朕已具悉,先因指挥塔察儿来奏报前事,已敕内官阮尧民、亦失哈、张童儿等前去整理,尚未回报,且待其归,具奏如何?”据此可以认为,此事件发生在宣德十年(1435)初至二月丙寅之前,因为此后阮尧民受命赴朝鲜处理事务。而刘清此时还在船厂,直至四月被捕。
(2)测试策略:在负载测试数据基础上,针对系统在特定数据量下负荷压力进行设计。主要验证处于性能转折点时,系统服务器的性能状况。
2.3 可靠性测试(Reliability Testing)
(1)Reliability Testing 是指加载一定的业务压力,同时让此压力持续运行一段时间,测试系统是否可以稳定运行。
(2)测试策略:主要验证系统在一定压力环境下,服务器所能承受的最大响应时间是否满足实际项目需要。
2.4 并发测试(Concurrency Testing)
(1)Concurrency Testing 是模拟用户并发访问同一应用程序中核心业务模块的测试,核心业务模块用于发现并发问题诸如内存泄漏,线程锁,资源争用,数据库死锁。
(2)测试策略:基于负载测试的基础上,针对测试曲线中较为平滑的部分设计测试案例。但要测试这类模块的一些和性能相关的算法,还要测试这类模块对并发用户的响应情况。
2.5 配置测试(Configuration Testing)
(1)Configuration Testing 验证各种配置对系统性能的影响,用于性能调优和规划能力。比如:JVM内存堆值的配置,一般实际环境中512M~1G左右性能最佳、数据库连接数设置等等。
(2)测试策略:通过对系统重大需求变更或对底层文件进行大量修改后,验证系统在不同环境配置参数、不同数据量下的服务器性能状况。
2.6 失效恢复性测试(Failover Testing)
(1)Failover Testing 针对有冗余备份和负载均衡的系统,用来检验如果系统局部发生故障,用户是否能够继续使用系统;以及如果这种情况发生,用户将受到多大程度的影响。
(2)测试策略:主要验证系统是否存在故障处理机制,已开发的功能是否满足客户实际需求。
2.7 疲劳强度测试
(1)疲劳测试是采用系统稳定运行情况下能够支持的最大并发用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。
(2)测试策略:以服务器能够正常稳定响应请求的最大并发用户数进行一定时间的疲劳测试,获取交易执行指标数据和系统资源监控数据。
2.8 大数据量测试
(1)主要是针对对数据库有特殊要求或业务中会产生大数据量的系统进行的测试:
①实时大数据量;②极限状态下的测试;③实时与极限结合;
(2)测试策略:可针对某些系统存储、传输、统计、查询等业务进行大数据量的独立数据量测试;或在测试用户较多或者某些业务产生较大数据量时进行压力性能测试、负载性能测试、疲劳性能测试相结合的综合数据量测试方案。从而获取交易执行指标数据和系统资源监控数据。
以上测试方法可以发现及定位系统占用资源过高、系统报错、系统运行不稳定、业务操作失败、数据丢失或错乱、文件丢失或错乱、系统无响应等问题。
3 案例分析(某网络协同办公系统)
3.1 对象分析
本某协同办公系统具有用户访问量大、数据比较集中、业务处理复杂、统计分析内容较多等相关特点,客户反馈用户使用量比较大时,经常出现系统响应速度太慢,加载时间过长,同时经常出系统错误提示信息,系统管理人员通过资源监控发现应用服务器的系统资源(如 CPU、内存、硬盘或网络等)长时间处于高位占用的状态等。
3.2 测试思路
第一、针对客户反馈的问题,确定需要优化的内容第二、根据反馈的问题选择相关业务指标进行测试。
第三、采用测试工具Httpwatch、LoadRunner分别模拟单个、多个用户访问系统,查看系统在各个检查点支持的并发用户数和响应时间;
第四、通过监控工具对服务器的资源(CPU、内存、网络等)进行监控,查看系统在各个检查点用户并发访问情况下服务器资源的使用情况,分析并优化系统相关应用环节。
3.3 实施过程
根据测试方案的设计,测试方法选择压力测试、疲劳强度测试,通过500用户并发压力测试以及8小时疲劳强度测试在特定数据量下负荷压力验证处于性能转折点时,系统服务器的资源使用状况,通过分析服务器的资源(CPU、内存、网络等)的使用情况,并优化系统相关应用环节以达到系统提供服务最优状态。
优化过程中出现了,当用户并发数达到500时,SQL语句及其索引或锁定属性不合理引发DISKIO过忙(磁盘读、写数据)或者CPU使用过高,造成执行时间过长,阻塞线程的执行,最终引发系统挂起或者执行超时引发系统挂机,同时 502、503异常频繁出现等问题。针对系统出现的问题采取了相关优化手段,从而不至于请求很快被拒绝掉等措施。
通过本次性能测试,知道了本系统在不同压力情况有不同表现情况,发现系统中有性能瓶颈的模块。对系统进行了多次调整优化,系统的整体性能显著提升,并运行更加可靠。
[1]陈能技,郭柏雅.性能测试诊断分析与优化,出版时间:2012-6-1
[2]于涌.精通软件性能测试与LoadRunner实战,出版时间:2010-3-1
[3]段念.软件性能测试过程详解与案例剖析,出版时间:2006-8-1