Global Cache Miss

最近数据库集群通过spotlight监控经常报一些警告:
 global cache 总是有Miss的情况
 Alarm raised  80.98 milliseconds latency across the interconnect. Average : 27.19 ms (averaged over 30 seconds) High Cluster latency (Interconnect Latency)

通过查找官方文档,发现如下:
确保 UDP 缓冲区大小合适
适用平台: Windows 除外的所有平台

原因: 私网可以说是 RAC 数据库的命脉。但是,如果未向 UDP 分配合适的缓冲空间用以发送和接收缓冲,则私网的性能将大幅降低。这将会导致您的集群出现稳定性问题。

更多信息:有关正确调整 UDP 缓冲区的更多信息,请参考以下文档:
Document 181489.1 Tuning Inter-Instance Performance in RAC and OPS
Document 563566.1 gc lost blocks diagnostics

注意: Windows 集群对 Cache fusion 通信使用 TCP,因此,UDP 缓冲区设置不适用于 Windows。

概要:
    在oracle rac环境中,RDBMS收集global cache的工作负载情况,这个情况会在STATSPACK、AWR、GRID CONTROL中被报告。集群中每个节点的全局内存块丢失状态(gc cr block lost" and/or "gc current block lost")都代表着网络中包交互的问题。这样的状态都应该被监控以及评估一确保GCS/GES网络效率。任何的块丢失会标明网络包传输中的问题并且应该被研究。
    绝大部分的global cache 块丢失都可以被联系到时网络错误配置的原因导致的。文件服务指南可以评估和查询到这行原因。
    即使大多数的讨论集中于性能问题上,它也可能导致一个节点被逐出。oracle集群依赖于心跳机制来确认节点资格。如果网络心跳经常性的被drop,节点被逐出就会发生。以下状况会导致节点被逐出:
 
    主要:"gc cr block lost" / "gc current block lost" in top 5 或者重大的等待事件
    次要:
              SQL traces report multiple gc cr requests / gc current request /
              gc cr multiblock requests with long and uniform elapsed times
              Poor application performance / throughput
              Packet send/receive errors as displayed in ifconfig or vendor supplied utility
              Netstat reports errors/retransmits/reassembly failures
              Node failures and node integration failures
              Abnormal cpu consumption attributed to network processing

    注意:块丢失问题经常伴随着gc cr multiblock waits,例如:waits for scans of consecutive blocks

全局块丢失诊断导引:

 1、错误或不可靠的线缆/网卡/转换器的配置连接       --这个很好检查,这里不做讨论。
 2、不合理的UDP接受缓冲区大小设置/UDP缓存套接字溢出

    描述:oracle rac全局内存块的变动通常会是爆发性的,因此,系统需要缓存接受这些包当等待CPU的资源的时候。不可用的缓存区域导致了全局包的丢失。在大多数UNIX系统中 用 'netstat -s' or 'netstat -su'将会得到帮助决定是缓冲区溢出还是内存缓冲接受的错误。
 
    解决办法:包丢失的情况经常是服务器上UDP缓冲设置不充分所引起的。当出现包或块丢失的环境下,可以留心观察到 "global cache cr requests"的等待状况,通常这是由于内存设置不充分引起的。
    当设置 DB_FILE_MULTIBLOCK_READ_COUNT 参数超过4的时候,会导致这一问题的出现,为了减轻这个问题带来的影响,通过增加UDP缓冲区和减小 DB_FILE_MULTIBLOCK_READ_COUNT 参数值可以做到。
    判断你的UDP套接字缓冲是否溢出和包丢失在UNIX平台上,可执行如下:
 ‘netstat -s' 或'netstat -su’然后重点查看以下数值是否过大:
   udpInOverflowsudpInOverflows
   packet receive errors
   fragments dropped
   outgoing packet drop
    注意:UDP包的丢失通常的结果是延时增加,如果netstat -s 中TCP项中"outgoing packets dropped" 增加的明显,增加wmem_default 和 wmem_max 参数值到 4MB可以解决这个问题。UDP的发送和接受缓冲值是依赖于系统的设置的。这些值是可以动态设置的。
 
 net.core.rmem_default 代表socket的接收缓冲区的默认值

 可以通过man tcp帮助中查到此参数的详细解释。如果此参数设置过小,将影响到能够接收到的UDP包的大小。


 net.core.rmem_max     代表socket的接收缓冲区的最大值
 可以通过man tcp帮助中查到此参数的详细解释。如果源代码中设置的值比此值大,这此值为准。

 RHEL最初的设置如下:
    net.core.rmem_default = 126976
    net.core.rmem_max = 131071
 推荐使用值:
     #net.core.rmem_default = 524288
     #net.core.wmem_default = 524288
     #net.core.rmem_max = 4194304
     #net.core.wmem_max = 4194304


 3、低网络性能和高CPU利用率,‘netstat -s’报告包重组失败
 
 状况描述:大UDP数据包可能被重组并依据Medium Transmission Unit(MTU)值发送多帧数据包,这些碎片数据包需要在接受端重组。高CPU利用率、不充分的重组缓冲区和UDP缓冲空间均可导致包的
 重组失败。'netstat -s'报告了大量的’ "reassembles failed" 和 "fragments dropped after timeout" 在接受节点的IP状态栏中。
 netstat -s 查看IP状态:
      3104582 fragments dropped after timeout
      34550600 reassemblies required
      8961342 packets reassembled ok
      3104582 packet reassembles failed
 
 解决办法:增加碎片重组缓冲区,定义更多的重组区域。增加重组碎片的时间,增加UDP接受缓冲区去调节网络延时状况。
 增加以下设置调节内存利用率:
 IP分片缓冲区参数:
      net.ipv4.ipfrag_low_thresh

      net.ipv4.ipfrag_high_thresh

 用于组装分片的IP数据报的最大内存量,它将直接影响到能够接收到最大的UDP包的大小。因为超过MTU值的包都会被分片,分片的IP包达到目的端后需选缓存起来,等所有包都到达之后再组装。如果缓存不够用,多余的将被丢弃,这会导致组装失败。
   redhat linux最初的设置如下:
     net.ipv4.ipfrag_low_thresh = 196608
     net.ipv4.ipfrag_high_thresh = 262144
 该设置能够支持的最大UDP大小约40000字节。

 建议修改如下:
 net.ipv4.ipfrag_low_thresh = 393216

 net.ipv4.ipfrag_high_thresh = 524288

 

4、Global Cache local miss rate is raised

     当本地的全局高速缓存丢失比例超过一定的门槛时候,我们通常需要警惕的是数据库中的热块问题。

     当一个block被一个逻辑读的时候,集群中一个实例需要从另外一个实例的不同模式的内存中传输。可能会引起这样的丢失警告。

    当一个热块被非常高频率的传输调用时,集群会出现过多的协调活动:

    可以解决的办法如下:

      1、对经常被调取的表进行分区

      2、通过使用服务隔离应用活动

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值