• 关键字:心跳网络、oracle rac 网络异常宕机、packet reassembles failed 、UDP error 转载大佬的一篇文章


    同一个数据库,同一次故障,两个人出据的数据库故障报告深度截然不同,很难受。

    我要是早看到就不会多次发生这个问题了,不完全一致但解决排查思路是一致的,关键字:心跳网络、oracle rac 、网络异常宕机、packet reassembles failed 、UDP error

    转载  自  https://www.anbob.com/archives/2851.html

    转载  自  https://www.anbob.com/archives/2851.html

    转载  自  https://www.anbob.com/archives/2851.html

    以下为原文:

    前几日和好友赵彬同学交流在ANBOB公众号投稿分享了一个案例,数据库第二个节点被驱逐出集群,并且多次自动重启以失败告终,驱逐原因在GI Alert log显示是私网通信丢失,而重启失败也是因为ASM无法启动,ASM db alert显示IPC Send timeout.  当时ping和tracert并没发现什么异常,从OSW中的netstat -s查看IP packet reassembles failed时间段值大量增长, 这是一套oracle 11.2.0.4 2Nodes RAC on RHEL 6.6的环境,另个每个数据库服务器CPU核数过百, 这个案例有多种巧合,如果CPU只有几个,问题也可能不会发生,如果是RHEL7也不会发生等等。当然最终以调速OS参数解决,但是原因更值得分析。

    Node1 GI ALERT LOG

    2017-03-02 11:46:26.607: 
    [/u01/11.2.0/grid/bin/oraagent.bin(121496)]CRS-5011:Check of resource "testdb" failed: details at "(:CLSN00007:)" in "/u01/11.2.0/grid/log/anbob/agent/crsd/oraagent_oracle//oraagent_oracle.log"
    2017-03-02 11:46:26.612: 
    [crsd(175117)]CRS-2765:Resource 'ora.testdb.db' has failed on server 'anbob'.
    2017-03-02 11:46:42.866: 
    [cssd(172139)]CRS-1612:Network communication with node db2 (2) missing for 50% of timeout interval.  Removal of this node from cluster in 14.620 seconds
    2017-03-02 11:46:50.869: 
    [cssd(172139)]CRS-1611:Network communication with node db2 (2) missing for 75% of timeout interval.  Removal of this node from cluster in 6.620 seconds
    2017-03-02 11:46:54.870: 
    [cssd(172139)]CRS-1610:Network communication with node db2 (2) missing for 90% of timeout interval.  Removal of this node from cluster in 2.620 seconds
    2017-03-02 11:46:57.493: 
    [cssd(172139)]CRS-1607:Node db2 is being evicted in cluster incarnation 351512591; details at (:CSSNM00007:) in /u01/11.2.0/grid/log/anbob/cssd/ocssd.log.
    2017-03-02 11:46:58.626: 
    [cssd(172139)]CRS-1662:Member kill requested by node db2 for member number 0, group DBHBCRM
    

    Node2 GI ALERT LOG

    2017-03-02 11:46:45.378: 
    [cssd(177450)]CRS-1663:Member kill issued by PID 84816 for 1 members, group DBCRM. Details at (:CSSGM00044:) in /u01/11.2.0/grid/log/db2/cssd/ocssd.log.
    2017-03-02 11:46:58.982: 
    [cssd(177450)]CRS-1608:This node was evicted by node 1, anbob; details at (:CSSNM00005:) in /u01/11.2.0/grid/log/db2/cssd/ocssd.log.
    2017-03-02 11:46:58.983: 
    [cssd(177450)]CRS-1656:The CSS daemon is terminating due to a fatal error; Details at (:CSSSC00012:) in /u01/11.2.0/grid/log/db2/cssd/ocssd.log  
    
    

    Note:
    node2 因网络通信失败而自杀 member kill.

    * allocate domain 7, invalid = TRUE 
     * domain 7 valid = 1 according to instance 1 
     Master broadcasted resource hash value bitmaps
     Non-local Process blocks cleaned out
     LMS 0: 0 GCS shadows cancelled, 0 closed, 0 Xw survived
     Set master node info 
     Submitted all remote-enqueue requests
     Dwn-cvts replayed, VALBLKs dubious
     All grantable enqueues granted
    Thu Mar 02 11:54:14 2017
    IPC Send timeout detected. Sender: ospid 153935 [oracle@db2 (LMD0)]
    Receiver: inst 1 binc 430132771 ospid 174276
    IPC Send timeout to 1.0 inc 92 for msg type 65521 from opid 10
    Thu Mar 02 11:54:16 2017
    Communications reconfiguration: instance_number 1
    Thu Mar 02 11:54:16 2017
    Dumping diagnostic data in directory=[cdmp_20170302115416], requested by (instance=1, osid=174274 (LMON)), summary=[abnormal instance termination].
    Reconfiguration started (old inc 92, new inc 96)
    List of instances:
     2 (myinst: 2) 
     Nested reconfiguration detected. 
     Global Resource Directory frozen
    * dead instance detected - domain 1 invalid = TRUE 
    freeing rdom 1
    * dead instance detected - domain 2 invalid = TRUE 
    freeing rdom 2
    

    Note:
    NODE2 的ASM因ipc time out失败一直未启动。

    Node2 OSW netsat信息

    zzz ***Thu Mar 2 11:40:31 CST 2017
    75646 packet reassembles failed
    zzz ***Thu Mar 2 11:40:52 CST 2017
    77043 packet reassembles failed
    zzz ***Thu Mar 2 11:46:33 CST 2017
    131134 packet reassembles failed
    

    Note:
    这段时间产生了大量的IP packet reassembles failed. 汇总统计了之前的时间里是不存在这个问题的。

    当然到这里如果你以以上信息为关键字在MOS中应该已经可以找到解决方案RHEL 6.6: IPC Send timeout/node eviction etc with high packet reassembles failure (Doc ID 2008933.1)。在NOTE中记录是因为OS过多的IP包重组失败导致,解决方法是加大重组的BUFFER大小或启用jumbo frame,对于jumbo frame需要硬件的支持,简单的就是增加network IP 重组buffer的大小。如RHEL 6.6中的

    net.ipv4.ipfrag_high_thresh = 16M     --default 4M
    net.ipv4.ipfrag_low_thresh = 15M       -- default 3M
    

    通常默认的应该满足基本需求的,像上面的调整在ORACLE的RHEL的最佳实践中也并未建议安装里调整,那后续的LINUX平台都要调整该参数么? 带着这个问题我查开了LINUX 7.2的内核参数

    [root@MiWiFi-srv ~]# sysctl -a|grep ipfrag
    net.ipv4.ipfrag_high_thresh = 4194304
    net.ipv4.ipfrag_low_thresh = 3145728
    net.ipv4.ipfrag_max_dist = 64
    net.ipv4.ipfrag_secret_interval = 600
    net.ipv4.ipfrag_time = 30
    

    如果是参数配置不是最佳,为什么LINUX最新版并未改变,连ORACLE软件也没建议修改? 那我们可以再深入研究一些。

    什么是IP packet reassembles failed?

    在linux平台使用netstat -s命令时会看到packet reassembles failed项, 记录的是IP重组包失败的累计数据值,什么时候要重组呢?当IP包通信存在碎片时。在网络通信协议中MTU(最大传输单元)限制了每次传输的IP 包的大小,一种是源端和目标端使用了不同的MTU时会交生碎片,这里需要先确认传输过程中的MTU大小配置,确认使用了相同的MTU;还有就是当传送的数据大于MTU时,回分成多个分片传递。这时调整MTU就不可能解决所有的IP包碎片的问题,可以通过加大通信的buffer值,尽可能保留更多的数据在源端拆包,目标端缓存等接收完整后再重组校验。 在LINUX系统中调整BUFFER使用ipfrag_low_thresh 和ipfrag_high_thresh参数,如果调整了这个参数仍有较大的重组失败还可以加大ipfrag_time 参数控制IP 碎片包在内存中保留的秒数时间。

    如果在ORACLE RAC环境中一个节点突然产生了大量的数据包输送给另一个节点,如应用设计问题,如数据文件cache fusion或归档只能一个节点访问时,都加大了网络通信量,这里需要检查网络负载及丢包或包不一致的现象,因为ORACLE在网络通信中使用了UDP和IP通信协议,这两类信息都需要关注。

    那是不是LINUX所有的系统都需要调整上面的参数呢?
    不是的, 从RHEL了解这个问题基本也就出现在LINUX6.6,和部分6.7中,这个问题的根本原因是在linux6.6中引入了percpu counters计数器在内核 kernel-2.6.32-477.el6, 在后面的linux 6.8(kernel-2.6.32-642.el6)和linux 6.7.x(kernel-2.6.32-573.8.1.el6)已经修复了该问题, 所以在其它配置中没有影响。
    这个计数器是在每个CPU上一个,当CPU多时很容易超过默认的4M ipfrag_high_thresh, 所以这也是就是我一开始说的CPU多了也是这个问题的巧合,当网络传输大里更容易超过,而产生faild.

    下面是RHEL的官方解释:

    A bug has been added to address this for RHEL6.6, where IP fragmentation memory accounting fails under some conditions.
  • 相关阅读:
    HDFS原理分析之HA机制:avatarnode原理
    [转]Hessian——轻量级远程调用方案
    [转]成为Java顶尖程序员 ,看这11本书就够了
    [转]Java四种线程池的使用
    [转]Java多线程
    IntelliJ IDEA 快捷键
    [转]django 日志logging的配置以及处理
    [转]使用TortoiseGit处理代码冲突
    动软DbHelperSQL
    [转]Entity Framework 的实体关系
  • 原文地址:https://www.cnblogs.com/BWZYDS/p/12867017.html
Copyright © 2020-2023  润新知