作者:Digital Observer(施嘉伟)
Oracle ACE Pro: Database
PostgreSQL ACE Partner
11年数据库行业经验,现主要从事数据库服务工作
拥有Oracle OCM、DB2 10.1 Fundamentals、MySQL 8.0 OCP、WebLogic 12c OCA、KCP、PCTP、PCSD、PGCM、OCI、PolarDB技术专家、达梦师资认证、数据安全咨询高级等认证
ITPUB认证专家、PolarDB开源社区技术顾问、HaloDB技术顾问、TiDB社区技术布道师、青学会MOP技术社区专家顾问、国内某高校企业实践指导教师
公众号/墨天轮:Digital Observer;CSDN/PGfans:施嘉伟;ITPUB:sjw1933
故障描述
某一天,收到客户核心数据库连接访问异常通知,远程连接做紧急恢复处理,由于当时不能正常对数据库做启停操作,故直接强制对操作系统进行重启后恢复业务。
业务恢复后,对rac数据库、操作系统进一步排查,判定是由于watchdog(看门狗)频繁进行cpu检测导致大量资源消耗,最终系统负载较高没有充足的资源调配存储I/O,致使业务访问数据库异常。
Watchdog(看门狗)简介
Watchdog(看门狗)是一种用于监控系统运行状态的机制,主要作用是检测系统的异常情况,如 CPU 卡死、长时间无响应等,并在必要时执行自动恢复操作,例如重启系统或终止进程。它通常用于提高系统的稳定性和可靠性,防止因硬件或软件故障导致的系统崩溃。
问题详细诊断过程
检查节点一,发现节点一由于网络通信原因遭驱逐,磁盘I/O通信也不能正常完成,最终无法获取仲裁盘正确状态,如下图:
检查节点二,节点一被仲裁驱逐。如下:
检查数据库数据访问情况,发现故障时间段(15:20-15:30)没有访问记录,最新记录有等待io记录为15:13,如下图:
这说明,磁盘I/O已经出现等待,后续业务已经无法顺畅进行操作。
检查操作系统日志,有较多的cpu自检测延时记录,并且watchdog(看门狗)处理服务超时状态。
故障期间,、登陆操作系统发现异常卡顿,检查top命令发现load average 很高,存在大量进程上下文频繁切换导致load average过高的情况。说明系统负载已经非常高。
操作系统后台查看watchdog运行不能及时处理cpu自检导致超时,watchdog(看门狗)处理频繁、超时会导致cpu处于高耗状态。高负载的情况下,load average飙升,操作系统整体性能严重下降,最终影响数据库的正常运行。
解决办法和建议
在本次故障中,Watchdog 频繁进行 CPU 检测,导致大量系统资源消耗,从而使系统负载升高,最终影响数据库的正常运行。建议在 RAC 集群环境下关闭 Watchdog,以避免因其频繁检测而造成的高 CPU 负载问题。
解决办法:建议rac两个节点关闭watchdog,减少极端情况下watchdog对cpu的性能消耗而影响操作系统正常运行的情况。
检测语句(1为开启,0为关闭)
sysctl kernel.nmi_watchdog 临时关闭 sysctl kernel.nmi_watchdog=0 长久关闭 # 在/etc/sysctl.conf中增加如下内容,开机自动关闭 kernel.nmi_watchdog = 0