文章多数来自互联网,若有冒犯的地方,请朋友们说明下,我会及时删除该文章!

(七)性能测试从零开始——LoadRunner入门与提升

上一篇 / 下一篇  2011-04-19 10:26:06 / 个人分类:LoadRunner

(七)性能测试从零开始——LoadRunner入门与提升

11.3.4  性能结果量化分析

  1.数据库死锁问题及相关解决建议

  当执行100用户并发审批二种票场景时,Loadrunner提示100个审批事务全部成功通过,而通过应用查询,实际提交数目却为60个。Loadrunner出现“误判”是由于HTTP协议的本身的限制,由于HTTP协议的无状态特点,Loadrunner只能通过HTTP协议返回码来判断脚本是否执行成功,而不是在业务层次上做判断。

  经排查,发现在并发负载下,提交审批二种票时,失败的页面上出现了如下错误信息:

  信息:执行查询SQL语句时发生错误:[IBM][CLI Driver][DB2/AIX64] SQL0911N  The current transaction has been rolled back because of a deadlock or timeout.  Reason code "68".  SQLSTATE=40001

  [IBM][CLI Driver][DB2/AIX64] SQL0911N  The current transaction has been rolled back because of a deadlock or timeout.  Reason code "68".  SQLSTATE=40001

  从DB2的监控数据来看,在并发数目超过30后,lock time大大增加,超过10秒,最终导致死锁超时。

  问题可能根源在:

  (1)开发人员在提交sql语句,做update,insert等操作时,启用了排它锁,导致死锁。

  (2)数据库的locktimeout参数设置过小。

  在针对locktimeout参数做过优化调试后,成功提交数有所提升,但仍无法从根本上消除死锁问题的发生。因此,建议在应用程序jdbc层上修改代码,避免死锁发生,才是解决问题根本之道。

  具体解决建议:

  建议开发人员检查jdbc层上可能存在死锁语句,这有可能:

  ● 一次commit包含多条sql语句

  ● 涉及同时多表操作的sql语句

  ● 逻辑死锁

  2.数据库表索引设计相关问题及解决建议

  数据库在设计上存在如下两个问题:

  (1)表设计存在大表风险

  在测试过程中,发现工单和两票在做删除操作时,记录只是改变状态字段,而始终分别保存在USERID.T_GDMX_GD,USERID.T_LP_GZP,USERID.T_LP_ CZP表中。

  这可能会导致在生产环境下,随着运行时间和用户数的增加,如上表数据记录越来越多,最终成为大表,引起查询性能的下降。一般,业界通常的解决类似问题的办法是另建备份表保存被删除的记录。

  (2)索引构建不合理,没有起到相应的作用。

  在运行两票性能测试场景过程中,通过loadrunner的db2 performance counter监控捕获pool_index_read指标,发现此指标的值一直为0。因此,我们推断当前数据库中存在着索引构建不合理的问题。

  已经查证,两票的工单存放于一张数据库表中,此表有80多个字段,而索引仅为7个。

  另外,通过变电一种票的性能测试结果可以看到total_sort_time总共花费986秒,排序时间过长,说明数据库的索引没有建在order by的字段上。

  具体解决建议:

  与开发人员进行沟通,构建合理的表及索引。

  3.硬件可能瓶颈

  在负载测试过程中,曾发生过数据库服务器cpu 100%运行,memory居高不下,最终数据库服务宕掉。经检测,在操作系统中有过虚拟内存分配高达9GB,导致机子负荷过重。

  具体解决建议:

  鉴于此,我们建议实际生产环境上的数据库服务器内存至少16GB或更高。

11.4 总结:

  从以上案例可以看出,对性能的定量分析可以在性能测试的不同阶段对不同的系统节点进行。而产品性能测试相比项目性能测试要更加复杂,产品性能测试还要加入回归周期,版本验证等因素。因此,产品的性能测试同功能测试一样,应该遵循以下几个原则:

  (1)尽早开始,在整个产品测试计划之初,同时开展性能测试规划,并让性能测试团队提早参与到整个产品的需求评审、设计评审、代码走查等活动中去。

  (2)每一轮性能回归测试,需要充分记录环境信息,采集更多的度量数据,以供回归测试进行参考比对分析。

  (3)形成良好的可重复的性能测试过程,有助于产品性能质量的改进。

 

TAG:

 

评分:0

我来说两句

congyu15

congyu15

自动化测试工具学习ING,做了近两年的手工测试,对于自动化测试一知半解。希望同行的兄弟姐妹们能够帮助我、指导我学习自动化测试工具,你们的一字一句都是我成长的源泉。感谢你们的无私奉献、乐此不疲!

日历

« 2021-10-14  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 19158
  • 日志数: 126
  • 建立时间: 2010-11-24
  • 更新时间: 2012-02-17

RSS订阅

Open Toolbar