性能调优提升速度

上一篇 / 下一篇  2011-12-12 14:25:13 / 个人分类:性能测试

 

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

'R8aGEqt ^xp0

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

W5Dul"?-i:A$c6f'G0

先简单描述下需求

+ef9N"az$\0

需要对两个表的数据进行对比,判断两个表的数据是否相等,数据量有17000左右,每个表有80个字段。51Testing软件测试网4Xh9[ @ z-wS uj;_ c

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

z `c*N \`Xa!p1b T0

我们的用例是用java程序开发的。51Testing软件测试网v%?6gcm0M y/S

调优一般是有通用的规则,同时也需要有敏感的触觉,感觉我们程序最可能出问题的地方。51Testing软件测试网.c&Gjh%B9x"o

下面我们按部就班的进行调试51Testing软件测试网#j)kw5}$s7r M"A

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

[Q3Lz oM5d"C0

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

\N4G k(S i/} x2r$W0

看起来没有异常,如果有就是内存不够51Testing软件测试网"D)^e?C j v

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

5Q0f3eH}'T0

二、检查程序内部算法

r#O k.W ~ C\c!}0

检查内部算法,调试程序,发现一条数据的对比算法需要执行80多次sql语句,耗费1分钟作用。51Testing软件测试网@7uNAjA$U%Z!Rs

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

7j)q z7Bp V0

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

x6@5[e(__%t5E{0

测试程序,发现运行整个完成14分钟。51Testing软件测试网,k/ol&xN]

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

Sy q+VaS.g4w0

三、检查数据库情况51Testing软件测试网*cPX(CaZ!]

检查数据库两边的表,发现新表对查询条件的字段没有加索引。51Testing软件测试网r$i^*f#J:VG-X

然后加上索引,测试程序发现只要3分钟左右就运行完成。51Testing软件测试网R0Q*Vj X d@

四、检查jvm运行情况

3EG+T%J_7lL0

对应jvm进行监控,发现gc非常频繁,程序运行完成使用了3万多次gc。51Testing软件测试网d]$FS B)G

修改jvm启动参数内存为1g,运行程序,只耗费了30秒就完成了。51Testing软件测试网#L;fL9o8E7K M

30秒完成我们的测试用例,已经达到了优化的目标,当然或许还有优化的余地。51Testing软件测试网9c6D\,Ru+Y

从这次优化可以发现应用逻辑的算法改进和数据库的优化,带来的效率是很可观的。51Testing软件测试网,}W"`#uK*i L#r"_-w

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

;x;Y k Hr6[ST0

TAG:

 

评分:0

我来说两句

Open Toolbar