一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

为什么Oracle RAC不建议随意修改misscount

时间:2026-08-08 13:21:55 编辑:袖梨 来源:一聚教程网

misscount设太大反而加剧故障影响,因节点卡死时集群会持续等待永不抵达的心跳包,导致资源状态不确定、客户端超时、SCN同步异常;disktimeout必须严格大于misscount,否则存储抖动将直接触发误驱逐;该参数为集群级配置,所有节点值必须一致,否则CRS启动失败;根本解决需修复私网CRC错误、voting disk I/O延迟或ocssd进程僵死等底层问题。

misscount设太大,节点卡死时反而更难被驱逐

这不是“容忍时间变长”那么简单。当节点因I/O卡顿、CPU打满或ocssd.bin进程僵死而无法发心跳时,misscount只是在等——等一个永远不会来的包。如果设成120秒,集群会持续认为该节点“可能还活着”,期间所有资源(VIP、ASM、DB)都处于不确定状态,客户端连接持续超时,LMS进程在后台反复重试锁请求,甚至引发跨节点SCN同步异常。真实案例里,有客户把misscount调到60,结果一次存储延迟导致节点挂了45秒,VIP没漂移,但归档日志写入中断,DG备库延迟飙升到2小时。

disktimeout必须严格大于misscount,否则磁盘心跳永远失效

Oracle CSS要求disktimeout >misscount,否则磁盘心跳路径(voting disk I/O)的响应窗口比网络心跳还短。比如misscount=30disktimeout=25,那只要voting disk I/O延迟超过25秒,CSS就先判定磁盘心跳失败,立刻驱逐节点——哪怕网络完全正常。这等于把故障面从“网络单点”扩大到“存储抖动即宕机”。查当前值用crsctl get css misscountcrsctl get css disktimeout,改完必须全量重启:crsctl stop crs && crsctl start crs

所有节点值必须一致,不一致会导致集群起不来

misscount是集群级参数,不是单节点配置。任意一个节点值和其他节点不同,CRS启动时就会校验失败,报错CRS-4678: Parameter mismatch in CSS configuration,整个集群卡在INIT状态。实操中常见错误是只改了一个节点,忘了同步其他节点;或者用crsctl set css misscount后没在所有节点执行crsctl stop crs && crsctl start crs,导致部分节点仍读旧值。验证方式:在每个节点分别执行crsctl get css misscount,输出必须完全相同。

真正要调的是底层抖动,不是misscount本身

频繁驱逐90%不是misscount太小,而是私网CRC错误、voting disk I/O延迟高(iostat -x 1%util > 95await > 50ms)、或ocssd.bin被OOM Killer干掉。调大misscount只是掩盖症状:比如把misscount从30改成60,问题没解决,只是把“30秒内驱逐”拖到60秒,期间业务受损时间翻倍。正确做法是先查$GRID_HOME/log//cssd/ocssd.log,确认是否真有Lost 2 disk heartbeatsnode eviction initiated,再针对性修网络、换存储链路、或调大vm.swappiness防OOM。

真正危险的不是参数值本身,是它让你误以为“调了就安全了”。集群健康靠的是心跳路径稳定,不是靠延长等待时间。

热门栏目