Oracle-抢购活动出现交易耗时飙高案例LATCH: MGA SHARED CONTEXT

问题背景:

        接用户保障,他们的核心交易库在理财抢购活动期间出现交易耗时飙高的问题,交易耗时从原来的130毫秒飙高到1秒以上,请求分析交易耗时飙高原因。

问题分析:

        通过应用的后台日志记录,发现交易耗时飙高的主要在于对交易报文的插入语句sql_id:587523twy3pn2

        问题期间的awr报告TOP 等待事件里面buffer busy waits、enq:TX -index contention以及Latch MGA shared context Latch平均等待较高

        通过ASH查看语句sql_id:587523twy3pn2的执行情况,可以看到执行会话被SID=8204的会话所堵塞,导致出现了大量的buffer busy wait等待,大量出现耗时900毫秒+

        堵塞持有会话8204的执行情况,会话当前等待事件为Latch MGA shared context Latch

        分析到这里,我们可以确认交易耗时飙高是由于latch: MGA shared context latch高等待引发堵塞,导致执行会话出现了大量的buffer busy wait 等待引发语句执行性能下降

        Latch MGA shared context Latch等待主要发生在MGA共享内存区域的并发申请latch等待,MGA是Oracle12.1版本之后新引入的共享内存区域,主要用于存放进程之间的共享地址空间,由segment和heap(KGH)的组成,MGA内存按需弹性创建,进程可以动态的创建和删除MGA segment,同时又可以在部分和全部进程间共享,使用latch: MGA锁来控制访问和保护

        当前数据库的版本为19.12,操作系统为AIX,在Oracle的mos上查到了与当前平台版本匹配的Bug 引发Latch MGA shared context Latch高等待的文档

(Bug 33352794 HIGH WAIT ON 'LATCH: MGA SHARED CONTEXT ROOT LATCH' AND 'LATCH: MGA SHARED CONTEXT LATCH')

        Oracle 19.12在AIX操作系统高并发场景下调用mmap和mumap映射内存申请MGA的时候会触发该bug,导致出现了高等待Latch MGA shared context Latch性能问题

        我们也与Oracle官方对该问题进行了沟通,确认AIX操作系统上存在高并发场景下引发Bug 33352794-Latch MGA shared context Latch高等待的问题,至于为什么只在AIX版本上存在,是由于Oracle虽然已经修复了代码的bug问题,但在平台做代码合并的时候并没有对AIX的平台做合并,导致在AIX版本上存在该特有的Bug 3335279

问题修复:

        1 可以通过安装19.13及以上的RU、RUR补丁或者应用oneoff补丁33352794进行修复

        2 在原设的Bug里面提到了一个可能的规避方法:通过设置隐含参数"_ksipc_service_mask"=0,通过修改控制与内核相关的进程间通信服务掩码禁用MGA进行规避,但这个规避Oracle不建议进行设置,不做推荐!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值