oracle 最大等待,Oracle-跑批缓慢之GC等待

背景

某银行客户,RAC 11.2.0.4 Linux环境在7月14日进行跑批业务,平时20分钟左右完成,今日将近2个小时才完成,客户反馈,跑批任务一直在1节点进行,现给出4份AWR报告,希望分析故障原因。(报告包含2份正常时段和2份异常时段)

问题分析

1、对比4份报告--正常时段

根据2份正常时段的报告抬头,跑批任务确实在1节点运行,26分钟完成跑批任务,与客户反馈相符

36c23dadf6f03415ef55c6bc5f36420d.png

8bc7a33eba614153ffaf42033d6bac2d.png

2、对比4份报告--异常时段

再观察2份异常时段的报告抬头,发现RAC 双节点的DB运行时间均在2个半小时,与客户之前反馈,任务只在一节点跑,不相符,由此我们大概可以判断问题的方向,1)可能是任务被负载均衡到2个节点,2)可能任务直接就在2节点运行

e8945e2f0e4cefd93d6a724271321da9.png

4245a455cfa08b564dd7d2f4347edfa8.png

3、分析4份报告Load Profile

因正常时段主要在1节点,我们可以注重分析1节点报告,进而和异常时段的两份报告做对比。

正常时段

b89c905457fedc730a12a28996d99367.png

异常时段

44c339c424611aa3b05c36e382dfa11f.png

ab472dffde16520cd7a7cd50f34c2378.png

根据跑批时段产生的redo size 大小,我们可以判断,正常时段节点1和异常时段节点2,产生redo size 大小一致,对此,我们可以断定,异常时段的跑批任务肯定是在2节点运行。

4、异常时段在2节点跑批验证

仅仅根据redo size如果不能说服,我们可以进一步分析,执行跑批的具体SQL。和客户沟通后,我们在正常时段节点1找到跑批的主SQL语句,同样的,我们在异常时段的2节点发现执行跑批SQL,且运行时间较长,这就进一步验证异常时段跑批任务是在2节点进行。

正常时段

7efa1c581d2b18a1fc23c283e2d15b23.png

异常时段

5c0285e39621f8aab81c6cdc0984a6c9.png

5、结论

由于本次跑批任务,由于某种原因,在2节点执行,所以导致跑批较慢???

如果只给客户一个这样的回复,相信是没有说服力,毕竟是RAC环境,数据是一样,为什么在2节点,就会变慢,且看下面分析。

问题深入分析

1、异常时段AWR等待事件

通过分析异常时段AWR,可以发现,在1、2节点,均有大量的GC相关的等待事件,gc buffer busy acquire、gc buffer busy release、gc cr block busy等,而正常时段也有类似的等待事件,但远远没有异常时段的严重。

50a5c674d22e63c2ac4a90a515bc4cef.png

7610e5334a25c3c900bb385645849442.png

关于GC,在网上都有比较详细的说明,我们在此简单提下,在RAC环境,有Cache Fusion(内存融合)机制,可以实现多节点的缓存数据共享,如果比较频繁,就会有大量的GC相关等待事件,类似今天处理的故障AWR中一样,说白了就是跨节点访问内存数据,针对本案例,此事件的发生是比较正常,因为平时数据都缓存在1节点,突然在2节点执行任务,就会有过多的GC,而GC的处理方法,基本都是分割应用,或者分割表,尽量避免频繁的多节点数据访问。

问题总结

对于本案例中,问题的本源比较容易发现,这也依赖前期与客户沟通的结果,提前预知跑批任务主要在1节点,给接下来的问题分析带来了极大的帮助,另外客户同时提供正常和异常时段的报告,也有助于进行的事件对比,所以,我们在以后的问题处理中,可遵循以下几点。

事先和客户沟通故障情况(本次沟通结果,正常时段1节点执行 20分钟完成,异常时段2个小时)

故障前是否有变更操作(本次沟通结果,无此步,但应该是其他原因造成的跑批任务漂移)

采取正常和异常对比快速定位(本次客户直接提供正常和异常的AWR)

交付客户结果(本次案例,通过定位在节点2执行,产生大量GC)

当然,处理问题的方式不是一成不变,针对不同情况还需不同对待,但整体先后流程不能少,比如一上去就敲键盘的工程师是不可能真正处理问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值