瑕疵全记录,数据库毛刺问题的排查与解决
日常数据库运维管理工作中,监控数据中往往会出现一些不正常的信号,如突然增高的 I/O 流量、短期内增大的时延等,这些信号称为“毛刺”。它们的出现可能会造成在线业务出现部分请求超时,或是服务质量的下降。有的毛刺消耗CPU,有的毛刺引起连接处理的阻塞,有的毛刺会使请求处理时间变长。有些毛刺问题凸显并且有规律可循,有些却杂乱无章。在没有影响到系统业务正常运行时,这类问题一般不会被特别关注,即便是精益求精的DBA想解决毛刺问题,但苦于问题持续时间太短,发现异常时,出现毛刺的时间点已经过去,且大多数毛刺问题无法稳定复现,所以对于毛刺根因的分析比较困难。再者,毛刺问题各式各样,无法用系统化调试的思想,从现象出发逐步推理、定位问题,通常DBA能做的就是看一下监控系统对应时间点的指标情况,而有些系统收集的信息并不全面,历史数据也保存的不够完整,导致排查过程困难重重。
今天我们来看看,数据库云管平台 zCloud 在实际应用中针对毛刺问题的表现怎么样?
最近,某用户环境,DBA在查看 zCloud 对数据库的监控数据时发现,其中一个数据库实例曾出现 IO 流量瞬时大幅上涨的情况(从每秒100MB上涨到每秒300MB以上),虽然数据库很快恢复正常,但DBA仍然带着疑问查看了该库的问题列表,随即发现问题列表中已经记录了“磁盘 IO 负载过高”的提示问题(如下图右侧)。点击问题查看详细内容,可以看到这个问题只持续了不到1分钟,问题详情给出了该实例“实例物理 IO 流量环比大幅增长”的问题描述,而且有两个数据库实例有此问题。
本次问题是一个定期统计数据程序的SQL语句引起,且相关表数据量每天都在大幅上涨,可以预期以后这个程序对数据库性能冲击会越来越大。后续通过定期清理的垃圾数据,大幅降低了这个SQL开销,从而消除了这个毛刺问题。
上述看似简单的问题分析,其实是借助智能诊断对历史事件的详细数据的记录和分析能力,在给出问题告警的同时,智能诊断已经根据当时的数据对根因做了一轮详细分析,形成了诊断树。这样,在后续DBA查看和判断这个问题时给予了很大的便利。
困扰DBA的毛刺问题,除了上述持续时间很短的瞬时毛刺,还有耗时毛刺,这类毛刺会直接影响系统的服务可用性,最直观的表现就是业务阻塞。例如下面这个例子:
某核心业务库上发现了严重的锁堵塞问题,通过 zCloud 检查,发现该问题持续了接近20分钟后恢复,查看根因推荐的是“DDL的SQL语句正在执行”。由此初步判断是当时有DDL运行引发了大量堵塞。
进一步查看诊断详情,通过诊断树可以发现,DDL语句是一个创建索引的语句,引发的堵塞类型主要是引发了大量的 Librarycachelock,所以某一时间段内请求处理受到阻塞。索引创建完成后堵塞问题恢复了。
上述两个案例,一个已经引起了业务问题,一个则并未引起业务问题甚至没有生成任何告警,无论哪一种都已经对系统稳定性、可用性造成了威胁。而解决毛刺问题,需要有一定技术深度和经验的高水平DBA进行根因分析,受限于系统对毛刺问题的记录与判断,很多时候因为缺乏关键信息记录只是临时解决,并未彻底解决,而且毛刺的问题类型各种各样,具体问题具体分析才能彻底消除隐患,所以DBA在解决这些毛刺时需要依赖运维软件发现这些问题和解决问题的能力。而在使用 zCloud 对数据库的运维管理时,只要是系统发生过的事件无论是否引起系统异常或产生告警都会被详细记录,并且生成当时的诊断记录,便于DBA做事件的复盘和分析,甚至还会给出多种解决方案。zCloud 不仅仅对数据库软件做管理,监控数据更是以集群视角,从系统硬件到系统软件再到数据库软件,凭借多年的专家运维经验设置告警规则及模型,更加全面、精准的发现、记录和告警。因此,任何系统瑕疵都被记录、分析并给出优化建议,当需要对此类毛刺问题进行分析时,第一时间为DBA诊断提供详细数据支撑,不仅极大提升了运维效率,也使得毛刺问题无所遁形。
zCloud 数据库云管平台,身边的“数据库专家”
智能诊断, 精准定位问题根因
zCloud 智能诊断覆盖数据采集→问题感知→自动诊断→识别根因→故障自愈五个阶段。从数据采集开始,在不影响数据库稳定性的前提下,最大程度覆盖和优化采集指标,并通过一系列算法,过滤分级,收敛检测点,降低误报率等,破除浅层表象,同时进行事件关联,自动生成诊断关系树,层层深入,最终找到问题根因,并提出解决方案。
zCloud 知识库积累的最佳实践和专家经验为智能诊断动态赋能,持续提升平台的智能化诊断能力。
往期精彩
FOLLOW US关注我们
回复关键词“云管平台”
了解有关 zCloud 产品的更多信息。