cowboy01 发表于 2013-11-7 16:24:02

金融领域系统性能缺陷及优化-2

b)另一个是系统软件方面的缺陷

根据中国软件评测中心实施过的金融领域的软件系统进行分析发现,其中绝大部分的性能方面缺陷均与系统软件有关,因此,如果希望能够从根本上解决系统软件性能问题,修改缺陷和优化配置是主要优先考虑的方向。以下主要从应用服务、数据库服务两个方面进行缺陷分析:

i. 应用服务方面的缺陷分析

应用服务器应用服务端缺陷一般分为几个方面,一个是应用服务JVM方面资源使用问题,这里简单介绍一下JVM,JVM是Java Virtual Machine(Java虚拟机)的缩写,它是一个虚拟出来的计算设备,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM包括一套字节码指令集、一组寄存器、一个堆栈和一个垃圾回收堆等。JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。这也是为什么Java程序支持跨平台的一个主要原因。通过分析发现,不少软件系统的JVM中堆栈可用空间大小不足,JVM垃圾回收情况不稳定等问题是影响应用服务器的应用服务处理效率的主要因素之一。另一方面是应用服务的Connection Pool使用问题。基于B/S架构的软件系统之所以能够实现多用户访问是使用了应用服务中的Connection Pool技术,Connection Pool技术我们形象的比喻为像高速公路中多个车道,每个车道单位时间内可以通行车辆数量是确定的,所以需要实现多用户并行访问时,就需要建立多个应用服务连接,这里需要关注的是最大连接数量、可用连接数量、执行队列挂起数量、执行队列长度等指标,如果最大连接数量如果设置不足的时候将会出现连接拥堵的情况,那就会出现连接请求队列现场,就像高速公路变窄后就会出现堵车排队现象。同时也要关注可用连接数量,如果可用连接数量长时间出现为零,并且执行队列中挂起数量很高时,就说明当前连接池设置连接数量不满足使用,并且已经造成很多业务处理任务等待的情况。如下图2.3.1 JMS连接池使用情况图



图2.3.1 JMS连接池资源使用情况图

从该图上可以看出JMS消息队列出现了大量的暂挂消息,而且此时并行处理出现超时现场,经过对连接数量设置情况进行分析发现是JMS服务中设置的初始化连接和最大连接数量过低造成的。

ii. 数据库服务方面的缺陷分析

数据库服务器的数据库服务方面的缺陷主要体现在两个方面,一个方面是数据库服务的资源使用的问题,另一个方面是数据库服务器的SQL语句执行效率的问题。

数据库服务器在资源使用上面主要需要关注的是Cache hit ratio、Log Data、Number of Deadlocks/Sec等资源指标使用情况,Cache hit ratio是指数据库缓存区命中率,缓存命中率越高相对来说数据库服务运行速度将会提高,反之缓存命中率越低数据库服务运行速度就会降低,缓存命中率减低就意味着将有大量的物理读操作出现,而物理读实际上是到硬盘上获取需要的数据,大量的物理读写操作势必会降低数据处理效率。因此,当缓存命中率持续运行在低位时,就需要考虑在现有基础上增加Cache大小,提高缓存命中率,降低物理读写操作的几率;Log Data大小设置合理性也会影响系统性能表现,现在数据库中大量的操作都离不开日志处理,数据库中有多种日志存在,如果分配给各个日志空间不合理或者不足的情况下,在用户持续并行访问条件下,系统日志空间有可能出现很快被写满的情况,一旦日志空间被写满,数据库服务随之就停止了,在前端给用户的反馈可能就是响应超时或者响应异常,这也是造成系统响应时间超时或者异常的重要原因之一;需要关注Number of DeadLocks/Sec出现情况。Locks是数据库运行中很常见的一类处理,数据库服务正常运行期间会有很多Locks出现,Number of DeadLocks/Sec是指每秒钟产生的死锁数量,数据库中大量出现DeadLocks就说明数据处理出现问题了,当某个处理出现DeadLocks时,反馈到前端用户操作上面时,就会导致某类业务操作出现大量的处理等待或者超时的情况,因此需要关注和监控数据库中DeadLocks出现的数量和产生原因。

另一个是数据库服务器的SQL语句方面问题。根据中国软件评测中心对实施过的项目进行分析发现,在网络应用的软件系统性能问题中涉及SQL语句方面的问题占了很高的份额,这其中如未建立数据表索引、进行全表扫描、或者关联子表过多等问题在高居性能故障问题中比例前列,这些看似低级的数据库设计问题往往却是金融领域系统系统并行访问执行效率低下,服务器资源占用居高不下的主要原因。

三、金融领域系统性能质量提高措施

提高金融领域系统性能质量措施可分为三个方面,第一个方面是提高客户端性能质量措施;第二个方面是提高网络性能质量措施;第三个方面是提高服务器端性能质量措施;

1. 提高客户端性能质量措施

在客户端方面提高性能质量主要从两个方面入手,一个是基于客户端组件的优化,一个是基于业务流程处理的优化。

a)基于客户端组件的优化

客户端组件的优化是提高用户使用性能体验的重要措施之一,因为不少用户使用操作体验较差是由客户端组件问题引起的,因此现有网络配置条件下,应优先对占用资源高、文件下载量大的组件进行“瘦身”优化,优化的最终目标以提升用户操作响应处理速度,达到用户可接受的操作响应时间范畴,在满足此需求的情况下再考虑用户界面美观化。

b)基于业务流程处理的优化

业务流程处理的优化也是提高客户端使用性能体验的重要措施之一,在中国软件评测中心实施过的项目中,部分系统的用户操作流程设计上存在不合理情况,这些设计方面的缺陷在一定程度上也导致了用户使用体验的不理想。比如,某个业务系统在每个用户登录系统后都默认进行某一类业务数据查询操作,这个业务操作可能并非所有用户在登录系统后所必须操作,但在系统登录高峰期时会给系统带来了极高的性能压力,因此,需要对这类业务操作进行合理优化或调整,降低人为因素导致的软件系统性能瓶颈。

2. 提高网络性能质量措施

由于项目前期网络应用规划设计考虑不足,导致实际网络应用不满足用户并行使用需求是目前网络性能方面的主要缺陷之一。因此,确定并满足软件系统真实的网络带宽需求成为提高网络性能表现的重要措施,对于未上线软件系统最佳的解决方法是在系统规划设计时全面分析和确定系统未来在不同层级应用下用户并行访问所需网络带宽需求,提前做好网络应用方面的规划和设计。对于已经上线系统或者出现网络方面问题的系统,建议通过性能测试确定在当前软硬件条件下系统可支持的最大并发用户数量,与当前提供的各级网络带宽下并发用户访问需求进行比对,对于那些不满足需求的情况可分为两种解决方法:一个方法是可以通过扩充当前网络带宽来解决,另一个方法是对当前系统页面及组件进行优化配置使之能够在不增加网络带宽的情况下满足并行用户访问需求。

3. 提高服务器端性能质量措施

提高服务器端性能质量措施可以从两个方面着手,一个是合理配置系统资源方面,一个是优化系统软件设置方面。

a)合理配置系统资源方面

提高性能质量的措施主要从均衡服务器资源方向入手,一方面是降低因为某些应用或者业务部署配置方面的缺陷造成对单一硬件资源使用不合理情况的概率。使系统硬件资源使用保持均衡。例如,因为业务的需要可能对某个表读写操作很频繁时,应该考虑多种方式降低对同一个硬盘分区的频繁读写,利用硬盘阵列多分区并行读写优势,提高单表读写效率,降低对单块硬盘高频率读写的概率,提高数据并行处理效率;另一个方面是通过集群技术提高系统并行处理能力,在集群技术中必然会涉及到服务的负载均衡技术,目的就是在满足大量用户并行访问的同时,使各服务器资源利用率保持均衡的水平,同时还提升了系统稳定可靠性,因此,使用一个合适的负载均衡策略对于这类软件系统尤为重要,这仍然需要通过大量的性能测试实施过程才能获得;

b)一个是优化系统软件设置方面

优化系统软件配置也是提高服务器端性能质量的重要措施之一,最主要的方法就是通过大量的性能测试找到适合软件系统的应用服务配置,数据库参数配置以及SQL语句结构优化等,从而提高软件系统的性能服务水平。

应用服务配置方面重点考虑连接池中建立连接的合理数量,这个数量可以通过性能测试获得,前提是在现有软硬件条件下找到资源占用合理的服务配置。例如,2台应用服务器集群方式下应该按照何种方式配置服务节点是合理的,假设每个应用服务器可以创建了1至8个应用服务节点,通过测试发现并不是按照最大数量创建应用服务节点就能带来系统最高性能表现,实际上通过性能测试会发现每个服务器创建4个应用服务节点性能表现可能是最好的,当前配置下如果使用更高节点时,因为硬件服务水平的限制,系统性能反而出现下降,低于4个应用服务节点可能会出现不能最大化利用服务器资源的情况。

数据库服务配置也是如此。例如,数据库设计时的文件系统数据块大小也是影响数据库系统数据IO读写效率,还有如SGA、PGA开辟的空间大小、大量Log空间大小等,上述这些数据库服务配置参数是否合理仍然需要通过大量多次的性能测试获得。数据库执行SQL语句方面。SQL语句执行效率是影响软件系统性能的关键因素,因此,对数据库中SQL语句的优化工作也是性能调优工作的重中之重了。通过一些方法和手段是可以获得系统并行访问期间那些SQL语句运行存在问题的,如通过Oracle10g提供的AWR报告,可以快速的找到执行过程中哪些SQL语句存在性能问题,如下图3.3.1 AWR分析报告之SQL语句耗用时间表



图3.3.1 AWR分析报告之SQL语句耗用时间表

通过该分析报告可以方便找到在SQL执行上耗费时间最长的一些SQL语句,并给出了SQL语句执行单次执行耗时,以及被执行的次数等SQL语句执行信息,并通过查看SQL ID方式可以查看到出现问题的SQL全部内容,通过提供分析报告中提供的相关信息,系统开发人员可以快速定位和分析存在疑点的SQL语句,并为后续的SQL语句性能优化提供有效的帮助。

以上内容是中国软件评测中心针对金融领域系统一些提高性能质量的建议和措施,供大家参考。

四、结束语

中国软件评测中心一贯认为改善金融领域系统性能不是单靠性能测试就能完成的,但是性能测试至今仍是控制性能有效的手段,是金融领域系统软件测试当中重中之重,不能忽视。

DPCQ_COCO 发表于 2014-4-28 15:01:57

顶一下!
非常棒的分享!
页: [1]
查看完整版本: 金融领域系统性能缺陷及优化-2