时间:2024-05-04
王立群/山东协和学院计算机学院
基于LoadRunner的网络仓库系统性能测试及优化
王立群/山东协和学院计算机学院
网络仓库管理系统由于其数据量巨大,平台的性能需要良好的测试。根据系统的特点和性能需求,制定详细的性能测试计划,借助自动化测试工具LoadRunner对系统进行测试并找出问题所在,提出改进和优化方法并实施,使系统性能得到提高,满足用户需求。
网络仓库系统;性能测试;LoadRunner;每秒事务处理数
网络仓库是一个借助先进通信设备可以随时调动所需物资的若干仓库的总和。它改变了传统的仓储观念,可以覆盖很大的地域,使用网络,根据订货的数量和距离,在最短的时间内选择一个距离最近并且有足额库存的仓库完成发货。网络仓库是现代信息技术的产物,它迎合了经济发展的需求,通过统筹资源,节省了时间和费用,提高了效率。在网购高峰期,单量剧增,为了确保物流单的顺利快速流转,需要对各个系统接口进行测试,找出网络仓库系统的性能瓶颈并进行调优,因此对网络仓库系统的性能测试意义重大。本文介绍如何使用自动化测试工具LoadRunner对某公司的网络仓库系统进行性能测试和性能调优,使其满足性能需求。
1.1 性能测试工具LoadRunner简介
性能测试是使用自动化测试工具模拟多种正常、峰值以及异常负载条件对系统的各项性能指标进行测试,而LoadRunner作为常用的自动化测试工具,可以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,优化性能。同时,它能支持广泛的协议和技术,为客户的特殊环境提供特殊的解决方案,确保系统获得良好的体验[1]。LoadRunner性能测试的流程如下。
1.1.1 制定测试计划 根据系统的需求规格说明书,制订测试的具体计划,列出测试指标,如系统的吞吐量、每秒事务处理数TPS(Transaction Per Second)、响应时间RT(Response Time)、并发用户数等,并写出相应的性能测试报告。
1.1.2 录制并完善测试脚本 根据用户性能测试需求,录制测试脚本,将用户的实际操作加入到测试脚本中,进行录制,当录制完一个基本的用户脚本后,在正式使用前还需要完善测试脚本,增强脚本的灵活性。常用的完善测试脚本的方法有:插入事务、插入结合点、插入注解、参数化输入和关联化等技术,保证脚本回放,以保证测试结果的真实性和精确性[2]。
1.1.3 实施测试 首先选择脚本,创建虚拟用户,设置测试场景,添加windows资源监视窗口和windows性能计数器,其次按照前面的测试用例和场景设置进行场景执行,结合大量的测试数据执行测试脚本,并记录测试结果。
1.1.4 分析测试结果 测试人员通过测试结果和制定的测试计划比较判断系统性能是否达到预期目标,如果测试结果不满足性能需求,那么就需要测试人员找出系统性能瓶颈,提出优化方案,然后再进行回归测试,直至系统性能满足需求。
LoadRunner通过用户执行被测程序客户端,在VuGen中录制被测系统的客户端和服务器的协议交互,生成脚本,然后在Controller中控制Load Generator,按照场景模拟用户,对服务器产生压力,同时对被测系统涉及的操作系统、数据库、中间件等资源进行监控,收集压力情况下的资源信息,测试结束后形成测试结果和监控数据,在结果分析器Analysis中进行分析,最后生成测试结果报告[3]。
1.2 网络仓库系统性能测试及优化
1.2.1 网络仓库系统架构 网络仓库系统的压测环境部署在一台机器上,由一个Nginx做负载,两个Tomcat运行业务程序,数据库使用Oracle。
1.2.2 系统测试过程中出现TPS不稳定,呈现周期性的剧烈抖动现象,见图1。
图1 系统优化前的TPS
首先检查测试脚本本身的代码是否存在问题。如报文数据的组装、HSF服务的调用等。进而测试以下方面并进行相应的优化:①检查HSF服务和MetaQ环境:通过检查HSF服务没有问题,MetaQ的环境也正常,通过排查发现是用于监控数据的Hbase服务出现问题。②检查负载Nginx和应用服务器Tomcat,配置Nginx与Tomcat之间的长连接,以提升性能。③优化应用程序:首先将业务处理分离为两部分:接收订单部分和处理订单部分。其中接收订单部分只接收订单,然后入库,然后就返回响应;订单处理部分就是跑后台任务,去查询接收到的订单表,然后最后续的业务操作。其次设置ID锁:为了产生全局唯一的ID,java代码里面使用了synchronized来加锁产生ID,在并发量大时,这会阻塞程序的运行的,可以改用oracle的sequence来产生唯一ID,去掉java代码中的锁程序。最后配置连接池:对应用程序的连接池的大小进行合理的配置,并且保证应用程序所有的数据库操作的连接都从连接池中取,且需要保证从连接池中取的连接使用完成后都要在finally代码块中进行close。④优化数据库:首先对数据库的连接数、缓存大小等进行配置,保证有足够的连接数可用,提升数据库的效率。其次读写分离:使用主库与备库的架构,写操作在主库上执行,读操作在备库上操作,数据有主库同步到备库(mysql基于binlog来同步,oracle使用redolog来同步)。再次设置报表,把报表放在备库上进行,且并发的高峰期,需要暂时停止报表服务。最后使用索引,保证表有索引,提升查询效率。
经过优化和反复压测比较,在不增加机器、不改变现有架构的条件下,250的并发用户数,得到了平均445的TPS,RT平均为70 ms。具体见图2。
图2 系统优化后的TPS
在软件性能测试及优化过程中,测试环节中的细节往往很重要,本文通过理论并借助实际的网络仓库系统作为测试对象,根据需求制定测试计划,使用LoadRunner实施性能测试,并对测试结果进行分析,针对发现的问题提出了改进优化的方法,使系统的性能得到了提高。
[1] 戴晓婧,张宁.基于LoadRunner的数据分析平台的性能测试及优化[J].计算机技术与发展,2013,23(7):202-206,210.
[2] 段念.软件性能测试过程详解与案例剖析[M].北京:清华大学出版社,2006.
[3] 温艳东.软件性能测试需求的获取方法综述[J].软件工程师,2010(2):124-127.
山东协和学院校级科技项目(编号:XHXY201543);国家级大学生创新创业训练计划项目(编号:201410825024)。
王立群(1982-),女,硕士,副教授,主要研究方向:软件性能测试、移动应用。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!