昨晚,项目组向D-SMART研发部汇报了一个失败案例。本项目基于D-SMART规范化的监控功能优化机制。他们发现最近某个数据库偶尔出现LOGON时间特别长的情况。经现场DBA分析,发现AUD$长时间未清零,数据量达到千万。清理AUD$后,暂未发现类似现象。基于这个案例,他们向D-SMART项目组反馈了一个运维经验,即如果AUD$长时间不清零,会存在session登录延迟增加的风险。看到这个需求,我的第一反应是D-SMART的日常检查中应该有一个AUD$的检查项,所以我让他们当场确认他们的模板中是否禁用了这个检查项。检查后发现他们并没有禁用,而且每天都有警报在这片区域。之前这个日常巡检报警也是上报给甲方负责人的,因为网络关闭,最近无法清理,所以积压了大量的数据。解决了这个问题,我就去处理其他事情。但是这东西总有不对的地方。突然想到,AUD$数据量大和LOGON超时有什么内在关系?似乎没有任何直接联系。因为LOGON只是往AUD$中插入了一条数据,并没有读取AUD$表中的数据进行分析。往1000条记录的表中插入一条数据,向1000万条记录的表中插入一条数据。向表中插入一条数据应该不会产生如此巨大的差异。于是微信问了现场DBA,他是怎么发现是AUD$导致LOGON超时问题的。他说他在故障期间分析了AUD$的insert语句,244次INSERT用了128秒,但是清理AUD$之后,304次INSERT用了1.25秒,效果非常明显。于是我问他是否有LOGON触发器之类的机制,或者一些特殊的审计项,他的反馈是没有。这令人费解。从机械角度来看,AUD$表变成5GB+不会导致插入一条记录的性能下降100倍,导致LOGON超时。所以我相信一定有其他原因导致了这个问题。于是就让他用hola把数据导出来发给实验室。遗憾的是,他们的版本是V2.1,由于需要管理上千个运维对象,所以采用了分布式部署模型。当前的hola1.0.2有一个bug,无法从D-SMART中分布式导出数据部署。于是我让他在今天发生故障的两个时间点生成一份“问题分析”报告,发过来。从等待事件分析可以看出,排在前几位的指标都是GC相关的指标,AUD$表中也有热点。从IO的角度来看,IOPS/IO吞吐量并不算高。OS端的IO压力不应该太大。由于客户端的安全限制,没有收集到本系统操作系统层面的所有指标和日志,所以无法分析操作系统的IO延迟是否正常。但是从报告中可以看出,几乎所有的数据库写IO指标都超标,而读IO指标没有一个超标。这更令人费解。另一个节点也出现了LOGON超时,但是从问题分析报告来看,等待事件完全不同。前几个是日志文件同步等IO相关指标。同时我们还发现系统中存在gcslogflushsync的现象。从这些问题来看,AUD$写入延迟的增加并不是,因此,更像是插入数据的性能受到其他问题的影响。所以我让现场DBA把操作系统日志和数据库日志都发过来。在发生GC竞争的节点上,日志都是正常的,但是在发生Logfilesyncdelaytimeout的节点上,我发现了多路径抖动的日志警告信息。从那时起,这个问题的来龙去脉就变得非常清楚了。由于节点2存在多径抖动,导致IO延迟不稳定,导致AUD$插入数据出现性能问题,最终导致LOGON超时。一个无意中的发现,排除了一个系统存在严重的隐患。这个系统在每个月底和月初都很忙,需要大量的数据写入和计算。好在业务很小的时候就发现了这个问题。不然到月底肯定会出大问题。而这个问题的发现过程也有很大的偶然成分。本来现场DBA以为这个问题已经解决了。如果不是站点和后端故障案例共享机制的存在,这个隐患很可能要等到造成重大问题时才被发现。对于问题的分析,大多数情况下,我们只是从表象入手,如果问题暂时不再出现,也就解决了。而如果分析这个问题的人对数据库机制缺乏深入的了解,就很难从这些表象中发现深层次的问题。而事实上,在运维体系中,一线工程师也不可能安放如此高水平的DBA。正因如此,我们一直强调工具不是万能的,一线运维也不是万能的。需要形成良好的问题闭环分析生态,让高水平的专家、一线二线运维人员、优质的监控数据采集分析工具结合起来,形成一个完整的系统,以便能够更高效、更准确地分析问题和解决问题。在表象和机制的问题上,我一直强调追本溯源或追本溯源的重要性。之前和一些运维专家讨论过这个问题。一些互联网公司的人认为,如果系统出了问题,有高可用的机制来解决。把一些有问题的部件砍掉,自然就能解决问题。也有人认为,出现问题后尽快恢复运行是关键。能做的就做根本原因分析,不能做的就做。企业不可能投入这么大的成本。从某些场景和用户的角度来看,这些观点也是正确的。但是并不是所有的公司都像互联网公司那样拥有如此完备的高可用机制,也不是所有的系统都可以通过重启系统来解决。所以问题的源头和问题的闭环对于大部分企业来说应该还是有价值的。目前无法全面开展的主要问题是成本高、产能不足。IT健康管理机制就是解决这种去中心化分析的成本问题,通过一二三线的联动,通过D-SMART丰富的数据采集诊断报告,以及最近上线的holadata数据交换工具。三线专家足不出户,服务全国客户,效率提升非常明显。对于昨天的问题,加上微信群里的讨论和现场收集资料的时间,专家参与定位问题的时间只有20分钟。
