当前位置: 首页 > news >正文

sql长时间卡在gc current request事件

  • 问题描述

        凌晨跑批出现超时。SQL f0ng33agbpzhs业务需要执行160w次左右。现场人员杀掉该sql,重新发起业务,业务批次成功跑完。

  • 问题分析

    1. 总体sql分析

分析对比sql的awrsqrpt,对比昨天3月8日的。

总体执行次数没有变化。Cpu时间、物理读等均在相同量级。

Cluster wait time异常

需要判断该sql是均匀的消耗cluster时间增加,还是某条sql出现的异常

    1. 0点-2点的awr中

等待事件现象诡异,gc current request出现1次,但是等待时间极长。这种情况下,基本可以确定是单条sql的问题,而不是每条sql的缓慢。

对比sql这里,执行146w次,时间6200s

    1. 0点30-1点的awr中

出现该异常等待事件

该sql执行了6w次

    1. 1点-1点30的awr中

该sql执行次数为0,说明该sql已经完全卡住不执行了

    1. 1点30-2点的awr中

该sql执行次数为0,说明该sql已经完全卡住不执行了

    1. 2点-2点30的awr中

该sql执行了800来次,且这个时间段应是人为介入杀连接,重新发起job的时间段

    1. Bug问题

根据现象,发现与bug 14195003现象接近,sql无限等待。文档中未提供补丁的解决方案。

Bug 14195003 Deadlock with "gc current request" and "gc buffer busy" is possible on RAC and wait forever

  • 流程梳理

0点前该业务模块启动,在0点30-1点中,该异常bug出现,sql完全hang住。1-2点中间,该sql完全没有执行次数增加。跑批模块告警后,人工介入,在2点-2点30之间,将该会话杀死,并重新发起job。会话杀死解开了该bug死锁,然后又执行了约800次,该模块跑完。

  • 建议办法

该bug的行程逻辑是4条进程形成的低概率gc事件死锁。2个节点各持有一个block,然后一致性读另一个节点他持有的block,且两节点上各有一条进程请求其他节点持有的该block的当前块

1、发现时及时杀掉任意4个会话中的一个,死锁即可解除。

2、业务上加强隔离性,该业务模块运行时,屏蔽其他节点涉及该部分业务。

相关文章:

  • 修改git在提交代码时的名称
  • Hive UDF开发实战:构建高性能JSON生成器
  • ⑥ ACG-系统管理
  • 多终端支持!PC+移动端越南体育直播系统源码解析
  • vscode 配置参考
  • Django 项目打包exe本地运行
  • Flutter常用功能教程:新手入门指南
  • 深入理解 Linux 进程管理:进程组、会话、守护进程与关键系统调用
  • Java 使用按位与存储多个值
  • CTFshow【命令执行】web29-web40 做题笔记
  • C#中状态机Stateless初使用
  • JAVA 对象序列化和反序列化
  • DataX 3.0详解
  • 开源项目利用browser-use-webui和DeepSeek把浏览器打造成一个AI Agent智能体!
  • deepseek日常用法的核心原则
  • android Kotlin原理
  • CentOS7系统更新yum源教程
  • Axios企业级封装实战:从拦截器到安全策略!!!
  • paddle ocr
  • 鸿蒙学习笔记(3)-像素单位、this指向问题、RelativeContainer布局、@Style装饰器和@Extend装饰器
  • 个人网站备案备注范文/宁波seo怎么做引流推广
  • 政务网站建设及管理/百度广告
  • 基于php电子商务网站开发/如何注册一个域名
  • 在相亲网站做红娘/平台推广费用一般是多少
  • wordpress首页插入广告/唐山seo推广公司
  • 网络注册公司怎么注册/重庆seo技术分享