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

GaussDB 等待事件为LockMgrLock处理方法

1 问题现象

通过查询各个线程的阻塞等待状态,从而更容易定位进程停止响应问题以及类似现象的原因:

  • 分布式版:
select wait_event,count(*) from pgxc_thread_wait_status group by 1 order by 2 desc;
  • 集中式版:
select wait_event,count(*) from pg_thread_wait_status group by 1 order by 2 desc;

出现大量的LockMgrLock等待事件,造成线程池满,业务执行慢。

查询线程池使用率:

select node_name,worker_info from dbe_perf.global_threadpool_status;

2 业务影响

数据库无法响应业务请求或响应超时。

3 有关LockMgrLock等待事件

      用于保护常规锁结构信息。如果此Event出现 在异常等待事件内,代表常规锁的管理器的分区锁产生热点

4 处理步骤 

3.1 调整num_internal_lock_partitions参数中FASTPATH_PART值

步骤1:使用gsql连接数据库。

gsql -d postgres -p 8000 -U user -r
  •    user需替换为实际的系统管理员账号,此处需要输入密码。
  •    分布式CN端口和集中式DN默认端口是8000,分布式DN端口可通过cm_ctl query -Cvdp查询获取。

步骤2:查看num_internal_lock_partitions参数值。

   show num_internal_lock_partitions;
  •     分布式实例需要分别查看CN及DN参数值,集中式仅查看DN参数值。

  •     如果未查询到此参数,则说明当前版本不支持,执行9~10,降低压力快速恢复业务。

  •     如果正常查询到此参数值,且num_internal_lock_partitions参数值中如果FASTPATH_PART≥200,则不进行修改且执行9~10,其他情况则执行6.c。

步骤3:修改num_internal_lock_partitions参数值。
num_internal_lock_partitions参数说明:FASTPATH_PART部分适用于事务内访问分区表分区数量过多的场景,建议调整值为(事务内分区数*(1+本地索引数量)+全局索引数量+10),在应急场景中,如果无法快速计算FASTPATH_PART值,可先将FASTPATH_PART调整为200。

  •    分布式:
gs_guc set -Z coordinator -Z datanode -N all -I all -c "num_internal_lock_partitions='CLOG_PART=256,CSNLOG_PART=512,LOG2_LOCKTABLE_PART=4,TWOPHASE_PART=1,FASTPATH_PART=200'"

  •    集中式:
gs_guc set -Z datanode -N all -I all -c "num_internal_lock_partitions='CLOG_PART=256,CSNLOG_PART=512,LOG2_LOCKTABLE_PART=4,TWOPHASE_PART=1,FASTPATH_PART=200'"

步骤4:重启实例,可选择按实例重启,或选择按节点滚动重启。

  • 按实例重启
cm_ctl stop && cm_ctl start
  • 按节点滚动重启。
cm_ctl stop -n nodeid && cm_ctl start -n nodeid

注:

  1. nodeid为节点ID,可通过cm_ctl query -Cvd查看获取node值
  2. 设置GUC参数、重启实例为高危操作,要协商停服务窗口。

步骤5:若以上步骤执行完成之后还存在问题,请执行3.2节

    3.2 查看SQL执行时长,收集统计信息分布式版

      select current_timestamp - query_start as runtime, datname, usename, pid, sessionid, substr(query,0,100) from pgxc_stat_activity where state != 'idle' and datname !='postgres' order by runtime desc limit 20;
      • 集中式版
      select current_timestamp - query_start as runtime, datname, usename, pid, sessionid, substr(query,0,100) from pg_stat_activity where state != 'idle' and datname !='postgres' order by runtime desc limit 20;

      如上图,该SQL执行时间为2min10s,SQL所在的数据库为db_test,用户为Ruby,从query字段获取查询SQL,将相关的表做一下统计收集:

      analyze 表名;


      文章转载自:

      http://kR2cWajR.pnmtk.cn
      http://LbQba6Qe.pnmtk.cn
      http://EadBYdRl.pnmtk.cn
      http://SLjMWHdo.pnmtk.cn
      http://rrWk2rLs.pnmtk.cn
      http://hZcMgyf6.pnmtk.cn
      http://YK30SvTk.pnmtk.cn
      http://cA5aWrK3.pnmtk.cn
      http://2qu5vFlv.pnmtk.cn
      http://Pqgj3VGr.pnmtk.cn
      http://ss0RlojX.pnmtk.cn
      http://bBy9pjag.pnmtk.cn
      http://6Z5D6qAk.pnmtk.cn
      http://2QaGc5HJ.pnmtk.cn
      http://gfiFkEbu.pnmtk.cn
      http://0b2JRgXB.pnmtk.cn
      http://MfMgBG3y.pnmtk.cn
      http://yqrR5xYA.pnmtk.cn
      http://ViT3e98t.pnmtk.cn
      http://ALyTukXZ.pnmtk.cn
      http://4g3fS2Fz.pnmtk.cn
      http://kHxHAbxu.pnmtk.cn
      http://jUq4ObXH.pnmtk.cn
      http://nZ3LRX9c.pnmtk.cn
      http://hPSHFnuI.pnmtk.cn
      http://5boLkOLM.pnmtk.cn
      http://uWPmN0PA.pnmtk.cn
      http://QqcoJCnT.pnmtk.cn
      http://psPevQaF.pnmtk.cn
      http://le0ZgWJs.pnmtk.cn
      http://www.dtcms.com/a/363311.html

      相关文章:

    • 为什么程序员总是发现不了自己的Bug?
    • flutter踩坑插件:Swift架构不兼容
    • 疯狂星期四文案网第58天运营日记
    • 手撕Redis底层2-网络模型深度剖析
    • 【3D 入门-4】trimesh 极速上手之 3D Mesh 数据结构解析(Vertices / Faces)
    • Valkey vs Redis详解
    • 基于若依框架开发WebSocket接口
    • 计算机Python毕业设计推荐:基于Django+Vue用户评论挖掘旅游系统
    • 【交易系统系列36】揭秘币安(Binance)技术心脏:从公开信息拼凑“MatchBox”撮合引擎架构
    • 海康摄像头开发---标准配置结构体(NET_DVR_STD_CONFIG)
    • End-To-End 之于推荐-kuaishou OneRec2 笔记
    • css中 ,有哪些⽅式可以隐藏页⾯元素? 区别?
    • 03_网关ip和端口映射(路由器转发)操作和原理
    • Telnet 原理与配置
    • 基于STM32单片机智能家居wifi远程监控系统机智云app设计
    • Replit在线编程工具:支持多语言环境免配置与实时协作,助力编程学习调试与社区项目复用
    • Spring Security的@PreAuthorize注解为什么会知道用户角色?
    • 0902 C++类的匿名对象
    • Nano Banana 复刻分镜,多图结合片刻生成想要的视频
    • 适配第一性原理与分子动力学研究的高性能工作站解析
    • 信息安全各类加密算法解析
    • LDR6600:2C1A适配器协议方案芯片
    • 综合诊断板CAN时间戳稳定性测试报告8.28
    • Nek La Vita È DJ大来 安装教程 简单步骤 教你怎么装(附安装包下载)
    • Windows 命令行:父目录与子目录
    • 力扣222 代码随想录Day15 第四题
    • 缓存工具服务(封装缓存击穿+缓存穿透+缓存雪崩)
    • HCIE-Datacom 论述【Y园区】
    • 流程自动化常见三大悖论及RPA人机协作的工程实践
    • SQL JOIN 操作全面解析