暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle12c库IP包重组失败引起RAC节点异常挂掉

IT那活儿 2025-06-20
190

点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!



背 景

DBA值班接到告警某生产环境Oracle12C RAC节点异常挂掉,通过查看为该库2节点数据库挂掉。
环境:
  • 12.2.0.1 RAC  
  • SUSE Linux Enterprise Server 12 P3 (x86_64)


问题分析

2.1 查看1节点alert日志
可以断定为数据库实例2被数据库实例1因IPC Send timeout detected驱逐了。
由于该库2节点近期两周前和一个月前都发生过这样的异常重启,我们将该现象反馈给主机和硬件工程师帮忙核查是否有网络问题和硬件问题。
最终硬件工程师反馈没有问题,主机工程师反馈说也没有见到网卡异常的报错。通过OSW 查看故障时间点CPU 也无异常。
2.2 查看2节点日志
通常RAC环境,节点1和节点2的日志显示出现有IPC Send Timeout的问题,一般为私网通讯问题:
  • 可以检查集群主机资源是否被耗尽, 导致集群节点无法响应心跳信息;
  • 集群主机之间网络出现问题;
  • 关于packet reassembles fail的问题。
根据MTU(Maximum Transmission Unit)的尺寸,大的UDP数据包可能被分片,并在多个帧中发送。这些零散的数据包需要在接收节点上重新组合。高CPU使用率(持续的或者是频繁的峰值),过小的reassembly buffer或者UDP buffer也会导致块重组失败。
在接收节点’netstat -s’输出的 "IP Statistics"部分提示有大量的Internet Protocol(IP)上的"reassembles failed" 和 "fragments dropped after timeout"信息。
分片的报文需要在指定时间(time-to-live)内完成重组(reassemble)
  • 没有能够完成重组的分片报文会被丢弃并要求重传;
  • 已经收到但是由于空间不足没有进行重组的数据分片会被直接丢弃。
在OracleRAC环境中,如果我们发现OSW的netstat 监控数据中显示packet reassembles failed增多,就需要引起重视,因为包重组失败率过高,会引发member kill/Node kill等故障出现。
根据redhat官方指出过高的cpu使用率和过小的 ressembly buffer都会导致数据包分片重组失败的信息。


解决方案

LINUX: 我们可以通过以下设置来修改reassemble buffer大小:
在/etc/sysctl.confg中将如下参数改大:
net.ipv4.ipfrag_high_thresh = 16777216
net.ipv4.ipfrag_low_thresh = 15728640

经过后续观察该集群没有再异常重启了。

END


本文作者:王俊晖(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论