案例:troubleshooting CRSD not starting on non-first node(一)

本案例来自西区某客户,客户环境为AIX 7.1,RAC 11.2.0.4。故障现象为在重启主机之后,重启启动集群时1节点启动正常,但是第二个节点的crsd资源无法启动。

可以看到crsd资源在启动时一直处于INTERMEDIATE状态,查看crsd日志看看有何发现

第二个节点启动crsd时,需要与Policy Engine的master节点的crsd进行通信完成Policy Engine的初始化,这里可以看到在通信时在接收message时一直由于timeout被drop,message大小仅仅1000多byte而已,最终导致crsd通信失败从而导致PE初始化失败。

从mos文档可以看到有一篇非常匹配该现象的文章CRSD not starting on non-first node: gipchaLowerDropMsg: dropping because of sequence timeout (Doc ID 2189195.1) ,结论是由于bug导致的。

workaround为打patch,临时可以通过停掉所有节点的gi重新启动解决。

但是尝试停掉所有节点的gi重新启动并不能解决。而且个人认为这篇mos过于武断了,导致dropmsg的原因有很多,居然那么肯定是bug?

通常集群间通信异常都与网络相关,netstat是一个很好的分析方向,我通常会结合watch命令去查看netstat -s的变化

重新发起启动crsd资源的命令,后观察netstat -s的变化输出

发现有几个指标会增长

都是udp socket buffer相关统计指标,于是怀疑udp socket buffer相关参数设置不对,考虑到重启过主机就不行了,很可能是没有永久修改udp_recvspace和udp_sendspace导致的。

no查看当前设置发现果然如此。

解决方法增大udp_recvspace和udp_sendspace即可

对于AIX上的RAC环境的网络相关参数可以参考RAC and Oracle Clusterware Best Practices and Starter Kit (AIX) (Doc ID 811293.1)

本案例修改完参数之后重启2节点crsd资源,over!

此条目发表在Oracle, Oracle troubleshooting分类目录,贴了, , , 标签。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注