私网心跳延迟累积突破misscount阈值直接触发cssd驱逐,非简单报警;crs-1611/1610/1607递进告警表明75%、90%、100%心跳丢失,多节点同期密集出现即定位底层网络抖动或haip/mtu/调度等复合故障。

私网心跳延迟直接触发 CSSD 进程超时判定,不是“延迟高就报警”,而是延迟叠加后突破 misscount 阈值,强制驱逐——这是 RAC 仲裁机制的硬性行为,无法绕过。
ocssd.log 里 CRS-1611/1610/1607 是延迟累积的明确信号
延迟本身不报错,但连续收不到心跳包就会触发递进告警:
-
CRS-1611:6.512 秒窗口内 75% 心跳未达 → 延迟已开始抖动,但尚未超限 -
CRS-1610:同一窗口 90% 未达 → 延迟恶化,CSSD 启动驱逐倒计时 -
CRS-1607:节点被正式驱逐,日志写明node 2 evicted
这三个错误若在 1–2 分钟内密集出现,说明不是单次丢包,而是持续延迟导致的窗口性失联。此时查 ping -c 100 -i 0.1 <peer_private_ip></peer_private_ip>,若 >5ms 的包占比超过 5%,基本可锁定私网延迟超标。
MTU 不一致或巨帧未端到端生效,会让 UDP 包静默丢弃
Oracle RAC 私网通信默认走 UDP,而 UDP 不重传、不纠错,MTU 错配会直接导致包被中间设备丢弃:
- 一个节点
mtu 9000,另一个仍是mtu 1500→ 大包发出去就被交换机截断,对端收不到 - 网卡驱动不支持巨帧(
ethtool eth1输出无Supports jumbo frames: Yes)→ 内核允许设 MTU,但硬件不收 - 没停集群统一改 MTU → LMS 和 CSSD 进程启动时读取的是旧值,运行中
ip link set不生效
验证必须用 ping -M do -s 8972 -I bond0 <peer_private_ip></peer_private_ip>,失败即说明链路层不通,不是网络连通性问题,而是帧大小协商失败。
HAIP 子接口未起来或 UDP 端口被拦截,心跳根本发不出去
HAIP(169.254.x.x)是 Oracle 11.2.0.2+ 引入的私网高可用机制,它负责实际发送心跳包。如果 HAIP 没起来,CSSD 就没有网络心跳源:
- 执行
ifconfig -a | grep 169.254,无输出说明 HAIP 未创建 - 查
ocssd.log是否有no network HB或clssnmvDHBValidateNCopy报错 - 检查防火墙:
iptables -L -n | grep :12345,确认 UDP 12345–12350 端口放行 - 确认
rp_filter关闭:sysctl net.ipv4.conf.bond0.rp_filter必须为0或2,不能是1
很多环境 firewalld 已关,但 iptables 规则仍存在隐式 DROP,且 HAIP 启动失败时 crsctl stat res -t 只显示 OFFLINE,不会提示具体原因。
重负载下 CSSD 调度延迟比网络延迟更致命
即使私网延迟正常,CPU 或 I/O 高负载也会让 CSSD 进程自身卡住,造成“假心跳丢失”:
-
top -p $(pgrep ocssd)中 %CPU 持续 >80%,且TIME+每秒增长异常快 → CSSD 正被系统资源反噬 -
ocssd.log出现clssnmWaitForAckstimeout或clssnmSendSyncfailed→ 心跳包都发不出去,不是网络问题,是进程调度失败 - voting disk 所在 ASM 磁盘组 I/O 延迟 >150ms →
disktimeout失效,misscount成为唯一判决依据
这种场景下改网络参数毫无意义,必须优先压测并调优系统资源分配,尤其是确保 ocssd.bin 能获得稳定 CPU 时间片和大页内存。
真正难处理的不是单点延迟,而是延迟、MTU、HAIP、调度四者中任意一环出问题,都会表现为相同的 CRS-1607 驱逐日志——必须按顺序交叉验证,不能只盯网络连通性。











