分类: Mysql/postgreSQL
2011-08-19 21:04:25
声明:这是网上找到的
项目一:交通银行全国大集中IBP(国际业务系统)项目
一般的调优策略如下:
在湖南移动的调优中,在数据库的设计和应用设计不做更改的前提下,首先,对IBM存储系统和主机系统作深入细致的参数和配置调整。同时,在湖南移动计费中心技术人员的全力配合下,对ESS存储系统上的数据分布作了大规模的调整,并且通过Precise软件对Oracle数据库性能参数的监控,定位对系统CPU, I/O等资源消耗严重的瓶颈,对Oracle数据库和应用系统提出性能调优建议。
2,针对应用的性能状况,修改Oracle的性能参数。
ü cursor_sharing的值从exact改为force, 减少internal lock wait.
ü spin_count的值从2000调整到5000。
· 根据Precise的监测和分析结果,检查资源消耗最大SQL语句的逻辑设计,将排名靠前SQL语句的表数据与索引分别存储,建立合适的分区索引,提高资源消耗靠前SQL语句的并行度。
· 通过StorWatch Expert软件持续监控ESS的使用,掌握ESS的性能表现和使用状况。
· 通过Precise软件对Oracle和应用有限数据的分析,确定当前应用系统并没有达到理想的运行状态,建议对应用系统作相应的检查和调整。同时,为了更准确定位应用问题所在,建议收集更长时间的数据,再进行更深入的分析。
3,调整数据在ESS上的分布。
首先将数据平均地分布在两个cluster上,之后将数据分布在尽可能多的通道上。
由于整个数据容量有约2120GB,整个数据的迁移需要几十个小时的时间,而在生产系统上是不允许有很长的停机时间进行数据迁移。
根据多个方案的论证对比,决定采用逻辑卷镜像的方案实施数据迁移。具体的步骤是先将所有的逻辑卷在目的的硬盘上建立镜像、同步数据、再将原硬盘上的镜像部分删除。整个数据迁移工作全部在系统的后台进行,共进行了60个小时,完成所有数据迁移。
4,对操作系统内核参数作出调整
· 对vmtune的参数进行调整如下:
-p -P -r -R -f -F -N -W
minperm maxperm minpgahead maxpgahead minfree maxfree pd_npages maxrandwrt
396414 792828 0 0 960 1024 65536 1
-M -w -k -c -b -B -u -l -d
maxpin npswarn npskill numclust numfsbufs hd_pbuf_cnt lvm_bufcnt lrubucket defps
3250555 65536 16384 16 2048 2656 9 131072 1
-s -n -S -L -g -h
sync_release_ilock nokilluid v_pinshm lgpg_regions lgpg_size strict_maxperm
1 0 0 0 0 0
-t -j -J -z
maxclient j2_nPagesPer j2_maxRandomWrite j2_nRandomCluster
792828 32 0 0
-Z -q -Q -y
j2_nBufferPer j2_minPageReadAhead j2_maxPageReadAhead memory_affinity
512 2 8 0
-V -i
num_spec_dataseg spec_dataseg_int
0 512
PTA balance threshold percentage = 50.0%
number of valid memory pages = 4063193 maxperm=20.0% of real memory
maximum pinable=80.0% of real memory minperm=10.0% of real memory
number of file memory pages = 1955960 numperm=49.3% of real memory
number of compressed memory pages = 0 compressed=0.0% of real memory
number of client memory pages = 0 numclient=0.0% of real memory
# of remote pgs sched-pageout = 0 maxclient=20.0% of real memory
· 对schedtune参数的调整如下:
THRASH SUSP FORK SCHED
-h -p -m -w -e -f -d -r -t -s
SYS PROC MULTI WAIT GRACE TICKS SCHED_D SCHED_R TIMESLICE MAXSPIN
0 4 2 1 2 10 16 16 1 8192
CLOCK SCHED_FIFO2 IDLE MIGRATION FIXED_PRI
-c -a -b -F
%usDELTA AFFINITY_LIM BARRIER/16 GLOBAL(1)
100 7 4 0
红色的为要调整的值。
5,检查资源消耗最大语句的逻辑设计。
l 建立合适的分区索引
l 将排名靠前语句的表数据与索引分别存储。
l 提高资源消耗靠前语句的并行度。
l Oracle 的参数cursor_sharing设为force减少internal lock wait
l 调整Latch的数量(如DB_BLOCK_LRU_LATCHES)或内存的一些参数(如SHARED_POOL_SIZE等)解决内部锁问题。
6,由于数据存储调整后,系统I/O性能状况良好,系统和存储端的性能表现已调整至最佳,系统和存储端的性能调优工作已经完成。建议客户下一步的工作重点是解决应用系统的性能瓶颈,结合Precise对应用的监控结果,检查应用的逻辑设计,数据索引的建立和分布。协助应用开发商修改应用。
7,调整操作系统交换空间(page space)。
项目成功与失败的经验归纳:
在湖南移动BOSS系统的性能调优中,项目的成功经验有以下几点:
1. 数据库前期的合理的架构设计(物理设计和逻辑设计)是整个项目成败的关键,合理的架构设计为整个项目稳定可靠高效运行打下了良好的基础,同时也起到了事半功倍的作用。在湖南移动BOSS系统中就是因为数据库在ESS物理存储的不合理分布而直接导致了系统的I/O瓶颈。
2. 根据系统的物理资源,对数据库的配置参数和操作系统内核参数做合理的调整,保证系统物理资源(CPU,I/O,内存和网络)和逻辑资源(裸设备,文件系统等)合理的分布和应用。
3. 要善于借助于第三方的监控软件(如:StorWatch Expert和Precise软件),这些软件的运用可以快速的定位性能瓶颈从而更快速的作出性能调整。
4. 检查资源消耗最大SQL语句的逻辑设计,将排名靠前SQL语句的表数据与索引分别存储,建立合适的分区索引,提高资源消耗靠前SQL语句的并行度。很多性能瓶颈往往是由于“恶劣”的SQL造成的。
5. 要有一个很好的性能调整流程和性能调整方法步骤,循序渐进,一步一步定位,逐步缩小范围,知道最后定位性能瓶颈。
6. 要善于团队合作,在整个性能调整中,我负责软件调整,要和硬件调整,网络调整的技术人员通力合作。
7. 性能调整是全局的工作,涉及应用开发,中间件,数据库,操作系统,存储,网络等。需要对全局的信息架构有清晰的认识。
你在项目中岗位与贡献:
在湖南移动BOSS系统的性能调整中,我是以IBM技术顾问身份参与性能调整的,主要负责对Oracle数据库配置参数的调整;负责完成数据库后期的性能监控,性能调优;负责检查资源消耗最大SQL语句的逻辑设计,将排名靠前SQL语句的表数据与索引分别存储,建立合适的分区索引,提高资源消耗靠前SQL语句的并行度。负责在操作系统层面定位性能瓶颈(CPU,内存,I/O和网络瓶颈)并调整操作系统内核参数。负责协助开发人员对应用开发作出修改和SQL性能调整。
项目四:江苏电力公司负控系统
项目简介(功能与用途):
江苏电力公司电力负荷管理及用电监控(简称负控系统)系统是为了解决了近年来江苏的“电荒”而上线的一个电力调度系统。通过负控系统可以合理进行电力的调度从而最大程度上保证企业和用户的用电。
项目难点与解决方案:
江苏电力公司负控系统后台数据库为DB2数据库,中间件为IBM CICS交易中间件,运行在IBM AIX操作系统上,前台采用VB和C开发。
该项目的难点主要由以下几点:
1, 系统上线的时间非常紧迫,限期在江苏17个地市上线,这就是说要确保每次每个地方上线都要成功不能失败。
2, 由于采用了IBM 的交易中间件CICS,这就需要在应用,数据库和CICS之间合理的调整相关配置参数,确保系统运行性能。
3, 在白天高峰期间,交易并发多,数据库性能不好。
4, 应用中部分SQL语句比较复杂,而且SQL语句的写法和谓词等方面使用不当,直接造成低效率的SQL运行,占用系统I/O和内存。
5, 各地市使用的DB2的版本(DB2 V5,DB2 V6,DB2 V7,DB2 V8)不一致,使用的操作系统(AIX 4.3.3 ,AIX 5L,AIX 5.2)版本也不一致,使用的CICS版本(CICS 4.3,CICS 5.0,CICS 5.1)也不一致;这需要在有限的时间内在不同的版本上做调试并且只能成功。
6, 负控系统关联营销系统和调度系统并且在同一台主机上工作,所以上线需要和相关部门和省电力公司协调,必须确保不能影响别的业务系统,必须保证首先不能因为负控系统不能上线而影响别的系统,其次保证负控系统上线后不能因为应用对资源的占用而影响其它系统。
对于上述问题,分别采用了如下解决方案:
1, CICS版本做充分的测试,确保应用万无一失。在应用开发期间,对不同的数据库版本,不同的操作系统版本和不同的
2, locklist,maxlocks,locktimeout和dlchktime)等数据库配置参数;其次,为了让锁的快速释放不至于引起交易阻塞,就需要我们在表上创建合理的索引。所以,造成引起锁等待的应用程序和SQL语句,对这样应用和SQL进行合理的构建索引。在业务逻辑允许的情况下,尽量使用UR(uncommit read)的隔离级别来提高读并发。对于负控系统白天并发期间产生的大量锁现象,首先,需要加大相关数据库中有关锁的参数(
3, SQL语句,利用DB2监控工具(事件监视器)找出这些SQL语句并作出解释分析判断SQL语句的瓶颈,对于这些问题,对开发人员详细解释如何高效的使用SQL,协助开发人员修改应用。对于应用开发中的很多运行效率低下
4, CICS的接口,CICS和数据库的XA接口,在业务逻辑满足的情况下,尽量采用一阶段提交(1pc),因为1pc的运行性能要比两阶段提交好。对于应用程序和
5, DB2的数据库性能调整中,详细评估系统中可以使用的资源和系统最大可能占用的资源,逐步调整数据库的配置参数并进一步监控调整的结果。因为负控系统和营销系统,调度系统运行在同一台机器上,所以在进行
项目成功与失败的经验归纳:
江苏电力公司负控系统从2004.4月首先在无锡上线到2004年11月在南通最后上线,整个系统上线期间如履薄冰,如临深渊。现在系统已经稳定运行近两年,负控系统的成功经验有以下几点:
1, 需要对企业信息架构有全局的了解,因为现在企业信息架构非常复杂,往往涉及到的不只是数据库,还有操作系统,中间件,应用,存储等,所以需要对信息架构全局有很全面的了解,这就需要不断的学习和更新新的技术。这次我们在负控系统上线期间,因为时间紧迫(一个地市只有一晚上将近10小时时间),在这么短的时间内,很难保证很顺利的上线,如果出现问题,一定要快速的定位是在什么层面(操作系统,数据库,中间件,应用,存储等)出现的问题然后快速解决之,所以必须具备全局的对信息架构的驾驭能力。
2, 和相关业务部门的沟通和协调非常关键,很多时候我们需要他们配合才能完成相关工作,所以交流和沟通是非常关键的。国内很多垄断部门的员工往往非常牛,这就需要我们耐心的,不厌其烦的去和他们做好沟通和协调。这一点对负控系统的按时上线也非常关键。
3, 在企业内部,往往可能存在很多不同版本的数据库,操作系统,CICS和应用版本,他们之间的兼容性非常关键。我们曾经碰到很多DB2 V8客户端无法访问DB2 V7服务器的情况,也碰到很多DB2 V7客户端访问DB2 V8服务器时出现实例crash的现象。同样还有很多操作系统版本和CICS版本不一致所带来的问题。这就需要我们详细了解数据库,CICS,应用和操作系统之间的兼容性问题。
4, 在部分地市,由于使用了最新的DB2版本,发现上线后有很多问题,后来经过问题诊断和咨询IBM,发现是DB2新版本bug的问题,所以企业在使用相关软件的时候,最好不要用最新的版本而要用相对稳定的版本。
5, 在进行数据库的配置参数调整时,一定详细了解系统的物理资源和逻辑资源,以及目前系统中已经在运行的系统和应用,确保新上线的应用不影响已有的应用。
6, 要结合不同的数据库产品,在保证业务逻辑允许的情况下,使用正确的隔离级别(UR)和CICS的一阶段提交来最大程度上提高数据库的并发和应用的性能。
你在项目中岗位与贡献:
负责完成江苏电力公司负控系统在17地市的上线;负责完成负控系统数据库后期的性能监控,性能调优;负责培训编程人员如何编写高效的SQL,从而使整体应用运行效率提高;负责构建数据库的索引并删除冗余的索引;负责负控系统的数据移植;负责协调上线期间和业务部门的交流沟通;负责负控系统后期的数据库维护和技术支持。
项目五:乌鲁木齐商业银行综合业务系统
项目简介(功能与用途):
乌鲁木齐商业银行银行综合业务系统是商行的核心系统,负责处理金卡工程、电话银行、网上银行、POS、ATM 及各种自助终端,该系统稳定运行保证了联机交易和批量处理能力的可靠性和高可用性,大大地简化了业务操作,为完善乌鲁木齐商业银行的信息决策管理体系,为提高各业务部门的风险控制和科学管理水平提供了必要的保障。
项目难点与解决方案:
乌鲁木齐商业银行数据库在2003-08-13日出现系统故障,造成银行综合业务系统停机,影响了业务的正常进行,造成了经济损失和不良的社会影响。乌鲁木齐商业银行后台采用DB2数据库,运行在IBM AIX平台上,使用IBM CICS交易中间件,前台采用嵌入C编程。
该项目的难点主要由以下几点:
1, 由于系统宕机后,为了保证系统快速启动,相关的CICS日志未能保存,这给后续的问题诊断带来的困难。
2, 由于该系统涉及到应用开发商(中联),系统集成商,系统维护商和客户,所以在进行问题诊断时,大家莫衷一是,都相互推诿责任,这对准确的定位带来了困难。
3, 客户使用的DB2版本很老(DB2 V6),IBM已经停止技术支持和补丁更新。
4, 客户的应用程序编写人员已经离开应用开发商公司,这给程序的更改带来很大困难。
5, 客户希望能够快速定位问题所在,并且杜绝这种问题的重现。
对于上述问题,分别采用了如下解决方案:
1, 仔细查看操作系统日志,数据库诊断日志和CICS的部分日志,仔细的定位问题所在,并且详细询问客户相关技术人员在系统宕机前都做了哪些操作。
2, 协调应用开发商,系统集成商和系统维护商,大家群策群力共同定位问题所在,应用开发商负责联系以前的编程人员,了解程序。系统集成商和系统维护商在测试机上搭建模拟环境,争取在模拟环境中能够把问题重现。
3,经过诊断发现是CICS编程中调用了C的malloc()函数而引起的,这需要协助开发商修改程序。
4,引起系统宕机的诱因是在白天做tar磁带的操作,由于tar磁带导致AIX系统文件内存使用完,CICS程序无法获取所需的资源从而导致业务系统宕机。
5,调整AIX的内核参数,调整文件内存和计算内存的页面替换算法所关联的vmtune所对应的maxperm,minperm和maxclient参数。
项目成功与失败的经验归纳:
通过对乌鲁木齐商业银行业务系统的宕机做问题诊断,得出以下几点经验:
1, 用户是希望能够解决问题并保证系统的稳定运行,这需要应用开发商,系统集成商和系统维护商能够通力合作共同找出问题并解决之而不是相互推卸责任。
2, 要保存好相关操作系统,CICS和数据库的诊断日志以保证系统在出现故障时准确定位,为客户编写脚本自动在机器宕机时候保存相关诊断日志。
3, 与客户相关技术人员详细沟通,沟通系统宕机前所做的操作,这一点非常重要。
4, 不但要定位问题,而且一定要有解决该问题的方法,避免该问题重现,所以必须指导相关开发人员修改程序,这需要我们具备良好的编程基础。
5, 告诫客户技术人员不要在高峰期间做compress,tar和大文件的ftp操作。
6, 在做问题诊断时,必须具备全局的操作系统,数据库,中间件和应用编程技术。这就需要我们要拓宽知识面,不断补充和学习新的技术。
你在项目中岗位与贡献:
在该项目中,我主要是客户所请的顾问,代表客户负责定位诊断引起系统停机的主要原因;负责协调应用开发商修改程序,系统集成商和系统维护商搭建模拟测试环境;负责调整相关操作系统内核参数;在找出问题的原因后负责协助开发人员修改程序并在测试系统上模拟测试并确保稳定可靠运行。
项目六:海口美兰机场离港系统
项目简介(功能与用途):
海口美兰机场离港系统(Departure Control System 简称DCS)主要提供办理登机、航班控制和配载平衡三大功能。离港系统是机场和旅客直接接触最主要的系统之一,牵涉到旅客办理登机手续、行李托运等各个环节。
项目难点与解决方案:
海口美兰机场离港系统(Departure Control System 简称DCS)后台数据库为DB2数据库,双机热备软件HACMP,网管软件为Netview,运行在IBM AIX操作系统上,前台采用Delphi开发。
该项目的难点主要由以下几点:
海口美兰机场离港系统(Departure Control System 简称DCS)是我参与开发的软件,该系统在2001年四月份上线后先后出现的性能问题。为此需要对数据库配置参数作出调整。
对于上述问题,分别采用了如下解决方案:
在2001年五月一日早上8:30左右,由于离港系统数据库运行性能非常低下,我决定对数据库配置参数作出调整,于是我在没有详细考虑的情况下,对DB2数据库的相关配置参数作出了等于原来10倍的调整,数据库配置参数生效后,大概在8:33分左右,离港系统小型机宕机,直接造成了从早上8:33分到9:40分这将近一小时的停机,直接影响了旅客的登机,办理值机手续,广播,电话和航显,造成了很大的影响。
项目成功与失败的经验归纳:
从这次失败的的经过中,我得到如下经验:
1, 系统(操作系统,数据库,中间件,应用)性能调整需要循序渐进,不可一蹴而就。
2, 调整相关配置参数时,需要对该配置参数有深刻的理解,当然这需要不断的补充理论知识。
3, 在性能调整时,要做好系统备份和数据库备份,要胆大心细,小心谨慎。
4, 在数据库配置调整时,一定要有最坏的打算,做好失败冗余和恢复方案。
5, 不可完全相信所谓的经验法则,那只是提供一种参考,我就是看了书上说的把缓冲池调整为系统内存的70%这条经验法则才间接导致系统停机的。
6, 在系统运行高峰期间,如果能够忍受,尽量保持系统的平衡稳定运行,否则可以尝试先在备机或测试机上调整。
7, 要不断的认真总结经验,积累。
8, 要把在书上看到的理论和在实践中碰到的实际问题结合起来。
你在项目中岗位与贡献:
失败的经验是一种宝贵的财富,它对我后期从事性能调整产生了很深远的影响,所以有时候要好好的总结失败并从中汲取经验教训。