HDNL性能调优(4)故障点分析与工具准备

为深入调查系统运行状况,我们从CPU、内存、磁盘I/O等方面对各服务器的运行情况进行了指标收集和分析,具体情况如下:

* 数据库系统运行情况。资产系统生产数据库运行于两台PCServer机器上,并对两台机器做数据库RAC环境集群。调查的情况看,数据库服务器内核和用户进程CPU平均使用率一般低于40%,在申报征收和税收会统业务操作高峰期不超过90%,较为正常;数据库使用内存约6G,占系统总内存70%左右,页面交换比较频繁,内存资源较紧张;磁盘I/O压力较大,CPU wait%值较大,平均在50%左右,业务高峰期可超过70%,这已经成为数据库系统运行的瓶颈。

* 中间件系统运行情况。中间件系统运行于两台Linux环境的PCSERVER机器上,运行情况良好,CPU平均使用率在40%左右,业务高峰期一般不超过80%;内存使用情况良好,页面交换接近于零;磁盘I/O情况正常,CPU wait%比较大,内存资源紧张,在应用服务器执行垃圾回收操作时,内存释放数量较大、甚至达到1G左右,JMS队列出现长期等待,JDBC连接池已经塞满,严重影响客户端的访问请求,存在瓶颈。

* 中间件集群代理服务器运行情况。代理服务器硬件采用同应用服务器同一台的机器,代理软件采用Weblogic Server 9.2。由于代理服务器只承担前台请求的分发,并不承担具体的运算工作,其在性能方面的压力较小,CPU平均使用率低于20%,内存、磁盘I/O情况良好。但是代理请求常常会出现请求无应答,导致集群分发出现严重不平衡、Node2应用服务器实例的JVM占用资源较Node1较高。

通过了解我们发现初步的问题分析如下:

* 数据库的性能问题。由于数据量不断增长,增加了数据操作的成本,降低了系统执行效率,数据量的变化也改变了部分SQL语句的执行计划,使得执行效率大幅下降,有的甚至增加了几百倍的执行时间,造成了数据库系统的CPU忙,磁盘读写紧张的情况,已成为系统的性能瓶颈。前台所有业务操作的目的都是查询数据库,因此数据库服务器的运行速度和响应时间关系到整个资产系统的运行效率,如果数据库系统存在性能问题,必然导致操作请求无法及时响应,从而使得资产系统运行缓慢。

* 中间件性能和稳定性问题。中间件服务器主机资源使用情况其中6个节点服务器操作系统运行基本正常,存在的问题主要WebLogic Server运行线程堵塞和系统核心转储等方面的问题,已严重影响系统的正常、稳定运行。线程堵塞后将无法运行更多的线程,后面的请求必须排队等待,大大降低了系统响应速度,前台操作速度急剧下降。核心转储主要出现在瘦客户应用服务器上,表现为后台服务进程在运行过程中非正常关闭。服务节点发生核心转储后,所有分派在该节点执行的请求全部中断,前台录入的资料将无法正常保存而需要重新登录。

* 代理服务器和群集配置问题。中间件群集是指多个中间件服务器协同工作以均衡负载、提高运行效率和增强系统可用性的方式。系统胖客户和瘦客户应用均采用了群集的方式,体现了一定的优势,但现有配置的缺点也很明显并且是致命的,即当群集中的一个节点服务器出现等待队列无法响应更多的请求时会导致代理服务器堵塞,而非将更多请求合理分配到富有余力的服务节点上,这必然导致系统无法及时响应,前台应用和操作速度缓慢。

* 程序代码质量问题。这是一个关键的问题,也是很多问题产生的根本原因。如在编码时静态变量使用不当、对象重复定义、SQL中存在许多无效对象等都容易导致系统内存问题,有的还可能引起网络流量加大而降低网络速度,数据库操作语句写法不当可能导致数据库系统CPU、内存资源紧张、磁盘I/O急剧增大等问题。另外,目前系统中存在锁堵塞、连接泄露和内存泄露也是程序代码质量问题引起的。连接泄露和连接泄露都可能导致系统崩溃,这已严重影响了系统稳定运行。

* 查询架构问题。目前资产系统的查询功能大部分是借助于本地web加载ActiveX控件等实现的,从应用的情况看,基于这种原生C/S模式的控件加载到B/S模式来应用的性能和稳定性都较差,发生响应请求无效和响应缓慢需要重试的情况较为频繁,这又直接导致中间件服务器的运行队列堵塞,从而影响前台业务操作,这使得系统的整体性能和稳定性都无法保障。

* 软件操作使用问题。软件操作必须遵循其规律,大量不正常的操作也是系统性能下降的重要原因之一。如在操作请求发出后服务器响应期间内,有的操作人员认为服务器没有响应而一次或多次重复提交操作,导致数据库系统重复执行同一SQL语句,由于该系统在对数据库索引的处理上不够优化、这可能引起系统性能下降,甚至可引起数据库锁表的情况发生,这将加重系统的负荷,造成系统运行速度下降。



根据业界经验,系统性能和稳定性问题主要来自于程序代码、主机操作系统、数据库、中间件、存储和网络等方面。我们系统运行中发现的性能和稳定性等方面的问题进行了分析,对其原因做了深入探讨,并提出以下调优策略:

* 优化代码,提高程序质量。应用程序的质量问题是系统性能的关键,也是性能优化的重点。因此,必须下大力气提高程序质量:

n 软件开发公司需要制定切实有效的程序编码规范并加强对编码人员的培训,加强编码规范化,从源头上提高程序质量。

n 加强软件的测试工作,尽量将软件的功能、性能等问题和缺陷暴露在程序正式发布之前,保证生产系统的正常运行。

n 对现有代码进行全面检查,逐一排除代码中存在的问题。通过优化代码改善或解决连接泄漏、内存泄漏等相关问题,提高程序执行效率。

* 优化查询模块。查询模块的性能问题是当前系统最为突出的一个问题。因此需对查询模块相关的程序代码、数据表结构和其逻辑设计进行调整和优化。另外,要提高查询系统的性能和稳定性,应在充分论证的基础上,逐步将基于控件开发的查询模块转换为用普通EJB程序或PLSQL代码实现的查询,一方面提高实现的灵活性,提高查询效率,另一方面减少系统管理的环节,降低系统复杂度,提高系统稳定性。

* 调优数据操作语句和数据库系统。优化数据库系统的目的是提高数据库系统吞吐量,消除数据库部分的性能瓶颈,数据库调优的主要手段是不良SQL语句的优化、不良数据库表结构的调整和数据库系统配置参数的调整等。在系统设计时应特别注意数据表间的逻辑关系,适当冗余部分字段;在系统运行过程中必须加强数据库系统实时监控,根据运行状况有针对性地对数据库操作语句进行调整和优化,通过索引、分区等手段优化数据库系统。

* Weblogic中间件服务器调优。中间件调优的目的主要是减少或消除等待队列,提高系统稳定性和相应速度,主要从EJB容器、JDBCJMSWEB容器、JVM等子系统入手对中间件服务器进行调整和优化。此外,服务器参数的正确配置也能够帮助提升性能,如在预定的吞吐量没有达到、等待队列过长但CPU有剩余的情况下增加线程数和执行队列数。

* 操作系统调优。操作系统级的性能指标主要有CPU、内存、磁盘I/O、网络I/O的利用情况。操作系统性能调整主要可以从虚拟内存的大小、缓存大小、TCP/IP参数、最大进程数、线程数、文件系统等参数调整入手。通过操作系统调优,不断排除操作系统对应用的限制,提高系统资源的利用效率,保证应用系统运行平台的稳健性。

* 存储系统调优。资产系统磁盘阵列现采用RAID 5,这种方式的磁盘利用率较高,但在修改数据时需要进行算法校验以保证数据安全,这必然要牺牲一定的性能。为改善数据库系统磁盘读写性能,建议将RAID方式改为0+1RAID 0+1采用镜像的方式实现,不需要进行数据校验,一方面可提高数据安全性,另一方面可提高磁盘写性能。

系统调优是一个复杂、持续的工程,伴随系统运行的全过程,极具挑战性。要做好这项工作,就要按照性能工程的方法和成功经验,加大系统管理人员力量的投入,加强系统日常管理,规范软件更新发布行为,加强对系统的监控,发现问题及时处理,定期对系统运行情况进行总结和探讨,积极主动地将性能工程的最佳实践应用到项目管理中,切实提高系统运行效率和系统稳定性,为湖南电力资产管理系统顺利在全省开展做好系统保障。

为保证调优结果必须体现在迭代测试的过程中,我们对故障点的诊断采用了针对每个测试用户、测试场景结合具体的性能诊断与分析。我们结合多个第三方工具、脚本、操作系统命令、应用服务器管理脚本、数据库SQLPLUS脚本来对测试用例进行全方面的分析。
我们采用的工具如下:
资源
描述
数量
Mercury LoadRunner 8.0
测试软件,License
为1000 Web 并发
1
Mercury Diagnostics
性能诊断、故障点排查软件
1
Quest Spotlight on Oracle
Oracle实例性能诊断软件
1
Quest Spotlight on Oracle RAC
Oracle RAC集群性能诊断软件
1
Quest Spotlight on Linux
Linux系统性能诊断软件
1
Application Vantage 10.0
性能监控工具
1
WebLogic Server 9.2 WSDL
WebLogicServer提供的诊断框架API
1
Oracle 10g RAC ClusterWare Performance Tools
Oracle提供的针对集群环境下的性能检测工具
1
Oracle 10g DB Analysis Tools & Report
Oracle 提供的数据库分析工具及报告工具
1
IBMDiagnostic Tool for Java Garbage Collector 1.3
IBM 提供的针对Java垃圾收集进行的优化工具
1
IBM Java HeapAnalyzer
IBM 提供针对Java Heap进行分析调试的工具
1
IBM Pattern Modeling and Analysis Tool for Java Garbage Collector
IBM 提供的专门为J2EE应用服务器分析JVM性能的工具
1
Linux Command & Shell Code
Linux提供的性能监控的命令以及提供的BASH,KSH,CSH环境下的编程脚本
16
武汉竟升服务器监控与网络监控工具包
武汉竟升公司自行开发的监控工具
1

你可能感兴趣的:(性能调优)