架构师之修炼内功篇:系统性能优化

开发 架构 项目管理
这段时间在做系统的优化。事情的起因是这样的。我们开发的系统需要在分公司使用,而分公司的网络带宽只有专线2M的。我们的系统的层次结构是C/S三层,虽然客户端是Swing开发的Desktop应用,但一样可以在分公司的通过网络连接进行访问,可以做到每次登陆后,实时更新程序。

这段时间在做系统的优化。事情的起因是这样的。我们开发的系统需要在分公司使用,而分公司的网络带宽只有专线2M的。我们的系统的层次结构是C/S三层,虽然客户端是Swing开发的Desktop应用,但一样可以在分公司的通过网络连接进行访问,可以做到每次登陆后,实时更新程序。由于网络速度不稳定,导致原来在局域网很快完成的应用,到分公司现场测试时,发现很慢,一个操作需要100 多秒(由于后台算法比较复杂,连接中间件和数据的查询次数比较频繁)。根据分析,将瓶颈确定在客户端与中间件层之间。为了优化,需要将精力放在这里,尽量减少与中间层的交互。由于篇幅有限,本文不讲Weblogic和Oracle DB的性能优化,仅从程序的角度来讲系统效率的优化。


 

具体做法如下:

1.根据测试报告中所描述的时间,找出瓶颈所在,确定优化方案,这个很重要,是行动的指南。

2.确定优化目标,例如原来100秒,优化到6秒;

3.分析网络连接点,将能够从服务端可以取出的数据,一次取出,在客户端进行逻辑运算。

4.需要考虑在网络不稳定的情况或异常关机的情况下,对于客户端的未保存的数据进行缓存,保证用户输入数据的安全。

5.除了减少中间层的访问次数,对于查询数据较慢的表格也需要加如Index进行优化。

根据上述方法,优化已经基本达到了目标,总结如下:

1.优化无止尽,需要找出瓶颈,确定优化目标;

2.优化不仅仅考虑中间层的连接次数,对于数据库的性能优化也同样重要。遇到过原来一个查询需要8000MS,通过数据库和SQL语句的优化,达到了500MS;

3.优化需要结合具体的程序考虑,需要层层跟踪。例如,需要跟踪哪里进行了中间层连接,这个连接是否有必要。

4.利用缓存时候,需要考虑缓存数据的一致性。

5.保存数据,进行批量中间层保存;

6.独立的事务处理可以在PL/SQL里面实现,这样效率***。

原文链接:http://blog.csdn.net/iammerryz/article/details/7679076

责任编辑:林师授 来源: iammerryz的博客
相关推荐

2017-09-13 10:51:25

技术人基础知识互联网技术

2021-07-12 23:43:46

AppAndroid优化

2017-12-18 09:43:35

架构师CTO秘籍

2010-04-09 13:26:44

2009-12-29 16:09:32

架构师

2021-06-07 09:35:11

架构运维技术

2011-03-18 11:13:07

LAMP度量性能

2013-03-20 17:18:07

Linux系统性能调优

2009-12-23 15:43:52

架构师

2010-11-17 16:41:49

Bug软件测试

2015-09-16 15:48:55

Android性能优化电量

2015-09-16 14:37:50

Android性能优化运算

2015-09-16 13:54:30

Android性能优化渲染

2021-08-10 08:44:13

系统性能优化

2011-03-10 14:40:52

2021-07-15 08:00:47

系统性能调优cpunuma架构

2011-10-31 09:22:07

系统架构

2020-04-15 19:53:49

TomcatApache内存

2011-11-01 09:02:26

系统架构师

2023-06-05 08:19:20

性能优化CPU
点赞
收藏

51CTO技术栈公众号