近期由于生产机房需要装修的缘故,DBA团队需要将多套数据库迁移至同城园区。数据库迁移是生产运维中常态化操作之一,其主要流程是:搭建一套和生产硬件、软件一致的新环境->采取技术手段拷贝数据->业务停机后安排新旧系统切换。在多年生产运维实践中,这套流程已经非常标准化,各个环节沉淀了大量的标准操作手册,每年置换多达上百套系统也鲜有发生问题。恰恰不巧的是,其中一套系统平稳迁移后,在整体硬件资源匹配、语句访问路径相同、应用数据量没有变化的情况,关键批量的执行耗时反而增加了20%。这又是怎么样的一个情况呢?今天我们就来讲讲这个问题。
1、问题现象
一套Oracle数据库(服务器为IBM Power 595+ HDS G1000磁盘机+Oracle RAC 11.2.0.3数据库)从一个园区迁移到另外的园区,迁移方案是在新园区搭建一套IBM Power 780+ HDS G1000磁盘机的新系统,安装数据库软件后,将新环境通过RMAN备份方式搭建为生产环境的备机(该方式可确保数据结构、元数据、访问路径等完全保持一致),在业务停机后通过switchover的方式完成角色切换。整个实施过程平稳顺利,新系统正常运行,技术验证和联机查询都是好的。
应用负责人对置换后的批量进行了跟进分析,发现了问题:一个关键生成收信文本的作业时间耗时明显变长了(平均耗时从原来40分钟增加到60分钟以上)。
注: 拐点即出现在数据库置换前后
DBA对数据库语句效率分析也发现了差异,从下面标红框的语句执行耗时对比来看,置换后的耗时比置换前有一定比例的增长,这表明相同的程序在数据库内部处理变慢了。
(a) 置换前的环境
(b)置换后的环境
2、分析过程回顾
(1)初步分析对比
问题暴露后,DBA马上组织了对置换前后的软硬件环境进行了对比排查:
(a)首先比对了硬件环境。置换前是IBM P595系列,置换后是IBM P780,物理核数都是20个,逻辑CPU核数后者是前者的2倍。P780是更新的高端设备,根据官方的资料以及生产的运维实践,其性能是优于P595的。
(b)其次比了磁盘性能。考虑到文件生成主要是IO密集型操作,对磁盘响应要求较高。新老环境所在的磁盘机都是HDS G1000的高端存储,盘机的读写响应时间都在3ms左右,没有差异。 从awr报告比对来看,数据库离散读、顺序读都没有显著的变化,说明问题也未出现在磁盘机侧。
(c)最后比对了数据库环境。对数据库的各项参数、引发差异的语句执行计划进行了分析,也没有发现不一样的地方,应用的数据量也保持稳定,批量程序也没有变化。
问题来了,既然硬件、存储、数据库、应用程序都没有显著差异,为何批量生成文件的耗时有明显变化、数据库内部SQL语句的执行耗时也有区别? 一定还有一些细微、未被关注的地方,导致了置换前后的差异,必须要认真比对、抽丝剥茧。
(2)进一步的定位分析
(d)由于SQL语句的执行时间存在差异,再回到数据库自身查到线索,把重点SQL的cpu消耗、IO耗时、整体时间做详细分析,发现了蛛丝马迹:置换前TOP SQL的CPU消耗都在80%以上,而置换后TOP SQL的CPU消耗都在50%左右,差异比较明显,初步感觉是新环境cpu处理不够强大、忙不过来,这和P780整体更优的定位有些矛盾。
置换前的top sql(红框表示cpu消耗占比)
置换后的top sql(红框表示cpu消耗占比)
(e)再分析下关键批量的执行特征,经仔细核对程序代码并与开发中心沟通了解,用于生成授信文件的程序是单线程批量,没有启用并行处理。也就是说P780更多的逻辑CPU核数对它没什么作用,处理快慢更依赖与单核的处理能力。
(f)再对新老环境的硬件进行详细比对,发现了在主频方面存在的差异: 原来的P595环境主频是5000MHZ,新环境P780虽然设备更新、逻辑核数更多,但主频却是3920MHZ,这就导致单核处理能力不如P595,其优势在于多线程的变形处理。进一步与硬件服务商沟通了解,主频差异在于所使用芯片型号的不同,P780的新一代芯片的设计主频比P595有所降低,但在应用实践中还鲜有发生P780比P595处理慢的情况,详细的技术机理还在和公司实验室做详细确认。
3、结论与启示
至此原因大白:新老环境差异的原因在于不同设备型号主频不同,再加上批量程序自身局限在串行处理,两方面叠加导致了置换前后处理效率的差异。 生产将系统再迁移到P595的环境后加以解决,对于批量程序优化的相关建议DBA团队也在和开发中心沟通尽快组织优化。
对于生产环境的置换,要在服务器、软件、磁盘机、应用程序等各个方面确保前后的匹配,包括服务器主频等指标应纳入关注指标体系,在规划分配时做好安排,才能最大限度保证置换自身的稳定性。
应用程序使用并行充分利用硬件资源是推荐做法,对于关键作业要在程序设计等环节充分考虑,避免因串行处理出现性能瓶颈。