记一次性能调优总结

发表于:2010-8-17 16:27

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:xiaohanjiang    来源:51Testing软件测试博客

  今天在运行测试工具的时候,发现运行非常缓慢,运行了4个多小时还没有运行完成。

  如此慢的运行效率,肯定需要对程序进行优化,否则我们的用例不知道何年何月才能运行完成。

  先简单描述下需求:

  需要对两个表的数据进行对比,判断两个表的数据是否相等,数据量有17000左右,每个表有80个字段。

  这两个表有相同的字段,也有不相同的字段,而且两个表都在不同字符集的数据库中。

  我们的用例是用java程序开发的。

  调优一般是有通用的规则,同时也需要有敏感的触觉,感觉我们程序最可能出问题的地方。

  下面我们按部就班的进行调试

  一、检查进程的在操作系统的中的占用资源情况

  发现占用内存50M左右,cpu占用最多为 40%

  看起来没有异常,如果有就是内存不够

  网络情况,由于在本机,网络速度应该可以排除。

  二、检查程序内部算法

  检查内部算法,调试程序,发现一条数据的对比算法需要执行80多次sql语句,耗费1分钟作用。

  照这样计算需要差不多30个小时才能完成。

  分析程序逻辑,改进算法,是程序的对比算法效率不高,对sql次数进行减少为一次。

  测试程序,发现运行整个完成14分钟。

  终于发现了程序最大的资源消耗在这里。

  三、检查数据库情况

  检查数据库两边的表,发现新表对查询条件的字段没有加索引。

  然后加上索引,测试程序发现只要3分钟左右就运行完成。

  四、检查jvm运行情况

  对应jvm进行监控,发现gc非常频繁,程序运行完成使用了3万多次gc。

  修改jvm启动参数内存为1g,运行程序,只耗费了30秒就完成了。

  30秒完成我们的测试用例,已经达到了优化的目标,当然或许还有优化的余地。

  从这次优化可以发现应用逻辑的算法改进和数据库的优化,带来的效率是很可观的。

  jvm的监控也是非常重要,jvm的参数配置不合适,很难发挥机器的作用。

版权声明:本文出自xiaohanjiang的51Testing软件测试博客:http://www.51testing.com/?294525

原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号