并发控制常用定位方法及解决措施

本文介绍了并发控制中遇到的排队问题及其定位方法。通过查看资源池监控视图或作业负载视图,可以判断是否存在排队情况。文章详细阐述了全局并发、快车道、静态慢车道和动态CCN的排队原因,并提供了相应的解决措施,如排查计数泄露、内存占用和CCN开发者视图分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

并发控制常用定位方法及解决措施

7.1 排队问题

出现业务阻塞、性能下降、查询无响应等类似现网问题时,通过以下方法可以排查是否排队问题并定位排队原因,同时根据排队原因给出相应规避措施。

7.1.1 确认是否排队

首先确认是否排队问题,其次排查排队原因,确认是否属于正常排队:

  • 813 及以上版本查询资源池监控视图
select rpname,slow_run,slow_wait,slow_limit,used_cpu,cpu_limit,used_mem,estimate_mem from gs_respool_resource_info;
  • 老版本查询作业负载视图
select resource_pool,attribute,lane,status,enqueue,sum(statement_mem) as stmt_mem,count(1) from pgxc_session_wlmstat where status!='finished' and attribute!='Internal' and usename!='Ruby' group by 1,2,3,4,5;

通过视图可以获取到各资源池快慢车道作业运行信息,据此可以判断是否排队问题:

如果有作业处于排队状态,则可能是排队导致的问题,否则排除排队问题;可能的排队原因包括:

  • 单 CN 全局并发排队;
  • 快车道并发排队;
  • 静态慢车道并发排队;
  • 静态慢车道内存排队;
  • 动态 CCN 全局内存排队;
  • 动态 CCN 慢车道并发排队;
  • 动态 CCN 慢车道内存排队。

排查排队原因

常见排队原因及解决措施

1)全局并发排队

单 CN 实际运行作业数≥全局并发上限,则全局并发排队正常;

单 CN 实际运行作业数长时间小于全局并发上限,则可能存在计数泄露。

2)快车道排队

快车道实际运行作业数≥快车道并发上限,则快车道并发排队正常;

快车道实际运行作业数长时间小于快车道并发上限,则可能存在计数泄露。

3)静态慢车道排队

慢车道实际运行作业数≥慢车道并发上限,则慢车道并发排队正常;

慢车道实际运行作业累计估算内存≥慢车道内存上限,则慢车道内存占用达到上限导致排队,关注是否有查询估算内存过大;

如果慢车道并发和内存占用长时间达不到上限,则可能存在计数泄露。

4)动态 CCN 排队

如果查询在 CCN 排队,则需要查询 CCN 开发者视图确认排队原因:

select * from pg_stat_get_workload_struct_info();

CCN 上可能的排队原因:

  • CCN 全局可用内存不足导致排队,此时需特别关注是否有查询估算内存过大;
  • 资源池实际运行作业数≥慢车道车道并发上限,资源池并发上限,正常排队;
  • 资源池实际运行作业累计估算内存≥慢车道内存上限,则慢车道内存占用达到上限导致排队,此时需特别关注是否有查询估算内存过大;
  • 资源池实际运行作业数或占用内存与记账值不符,则可能存在计数泄露 BUG;
  • 队首作业在 CCN 哈希中不存在,说明队首作业残留导致查询不能正常下发;
  • CN/CCN 处于 recover 状态或收集 DN 内存信息失败(多 CCN)导致所有查询等待 5s 下发,现象为所有查询排队时间均为 5~6s。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值