摘要:现网在使用动态负载管理的时候,经常出现很多wait in ccn的情况,大家处理起来就会认为是hung住或者怎么着了,很着急,但wait ccn其实就是一个等待资源的状态,在此总结一个ccn问题处理的博文,ccn的问题都可以通过此贴处理。

本文分享自华为云社区《GaussDB(DWS) wait in ccn queue的时候,怎么迅速定位处理?》,作者:Malick 。

前言

现网在使用动态负载管理的时候,经常出现很多wait in ccn的情况,大家处理起来就会认为是hung住或者怎么着了,很着急,但wait ccn其实就是一个等待资源的状态,在此总结一个ccn问题处理的博文,ccn的问题都可以通过此贴处理。

背景知识:

  • 哪个是ccn:

连接环境,

source 环境变量

source /opt/huawei/Bigdata/mppdb/.mppdbgs_profile

执行:

cm_ctl query -Cv | grep Cen -A 4

结果如下:

5003就是集群的ccn。

ccn是什么:ccn作为集群并发控制大脑,所有复杂作业都会到ccn去申请资源,申请到资源的语句才能下发。复杂语句都会在ccn统一记录。

视图解释:

  • pg_stat_get_workload_struct_info();

  • totalsize代表ccn总体能分配的内存,totalsize:即最大动态内存;freesize_limit即最大可用于ccn分配的内存,为最大动态内存的80%。freesize代表当前剩余内存。
  • 只需要关注图中的central waiting/running number(global的可以不用关注,属于另一个数据结构,和central waiting是重复信息。)。每一行代表一个语句。running代表语句正在运行,waiting代表语句正在排队。queryId代表语句的线程号,对应pg/pgxc_thread_wait_status中的lwtid、pg_sessiion_wlmstat中的processid。
  • pg_session_wlmstat/pgxc_session_wlmstat();

步骤一、判断问题场景

  • 连接ccn查询以下语句, 判断问题场景:

第一步,查询pgxc_stat_activity,判断是否语句大量在wait ccn。或者某个资源池的语句都在wait ccn。

  • 查询pg/pgxc_session_wlmstat,判断是否所有复杂语句都在排队。或者同一队列的语句都在排队。

第一步,连接 ccn节点,查询

select * from pg_stat_get_workload_struct_info();

第二步,查询pgxc_session_wlmstat();

select threadid,processid,usename,attribute,status,enqueue,statement_mem,active_points,control_group,resource_pool,substring(query,position('explain' in query),20) as subquery from pg_session_wlmstat order by status,attribute,usename,subquery,resource_pool;

根据以下场景判断使用后续哪种处理办法:

1)如果workload视图中有个别语句处于Running状态,并且running的语句占用内存很大, 占据freesize,大量语句处于waiting状态,那么基本可以确定走问题处理场景一。

2)如果是有workload视图中有running状态的语句,但是实际上pgxc_stat_activity或者pg_session_wlmstat视图中只有waiting状态的语句,并且workload视图中,存在两条或者多条语句的qid.queryId的值相同。那么基本确定走问题处理场景二。

3)如果所有语句都在waiting状态,没有running状态的语句,那么基本确定走处理场景三。

处理场景一 大内存语句导致问题

第一步 找到workload视图中占用内存过大的语句。

如上图:总共可用内存为1638MB,目前正在运行的一个语句占用内存为1048MB,剩余内存freesize=590MB

此时,其余语句内存估算大小都是600MB,因此内存不足全都无法下发下去,只有等到该1048的语句结束,内存释放才能恢复正常。

第二步 根据语句对应的qid.queryId,找到语句的pid。如上图为9145

select coorname,pid,usename,substr(query,0,30) from pgxc_stat_activity a,pgxc_thread_wait_status b where a.pid = b.tid and b.lwtid = $qid.query_id;

第三步 根据pid和cn,查杀大内存语句。释放内存后即可恢复。

处理场景二 hash残留或者其他语句残留问题

第一步 确认有问题的资源池上的并发配置:

select * from pg_resource_pool;

第二步 如果只是达到了资源池并发上限,例如,资源池并发设置为10,残留的running语句数量是10,因为并发达到上限,语句都处于等待状态,那么调整队列并发为-1,不限制之后,等待并发的语句即可下发下去。

修改办法,以son_pool为例:

alter resource pool son_pool with(active_statements=-1);

第三步 清理掉问题语句(连接不断开,线程不释放,残留信息不会自动清理)

备注:清理已经失效的语句信息,是根据/proc/processed是否还存在进行判断,如不存在,则清理,如一直占有该连接,则不会释放线程。残留也不会自动清理。

  • 问题语句的判定:

在workload视图中qid.queryId重复的语句便是问题语句,问题线程,重复两条,可能其中一条是正常的,另一条是残留的。也可能都是有问题的,但是终究实际上只有一个活跃的语句在排队或者执行。

2)清理问题语句方法,根据上述1)中提到的重复的qid.queryId,找到问题语句:

select coorname,pid,usename,substr(query,0,30) from pgxc_stat_activity a,pgxc_thread_wait_status b where a.pid = b.tid and b.lwtid = $qid.query_id;

第三步 根据pid和cn,使用pg_terminate_backend(pid)查杀残留语句。释放并发以及内存资源之后恢复。

处理场景三 长跳转锁问题

第一步 确认问题

打堆栈

gstack $ccn_pid > ccnStack.log

grep grep pthread_mutex_lock ccnStack.log

如有类似如下结果,则确认该问题

第二步 应急处理

处理方法:

kill -9 ccn_pid

点击关注,第一时间了解华为云新鲜技术~

数仓出现“wait in ccn queue”的时候,怎么迅速定位处理?相关推荐

  1. Hive 老当益庄 | 深度解读 Flink 1.11:流批一体 Hive 数仓

    精选30+云产品,助力企业轻松上云!>>> 首先恭喜 Table/SQL 的 blink planner 成为默认 Planner,撒花.撒花. Flink 1.11 中流计算结合 ...

  2. 大数据电商离线数仓项目-上篇

    下一篇:电商数仓项目-下篇 文章目录 第1章 数仓分层 1.1 为什么要分层 1.2 数据集市与数据仓库概念 1.3 数仓命名规范 1.3.1 表命名 1.3.2 脚本命名 1.3.3 表字段类型 第 ...

  3. 企业级数据仓库:数据仓库概述;核心技术框架,数仓理论,数据通道Hive技术框架,HBase设计,系统调度,关系模式范式,ER图,维度建模,星型/雪花/星座模式,数据采集同步,业务数据埋点,数据仓库规范

    文章目录 第一章 数据仓库概述 1.1 数据仓库简介 1.1.2 什么是数据仓库? 1.1.3 OLTP 与 OLAP 1.2 数据仓库技术架构 1.3 课程目标 第二章 核心技术框架 2.1 数据仓 ...

  4. OushuDB入门(四)——数仓架构篇

    本实验将应用OushuDB数据库,为一个销售订单系统建立数据仓库.通过这个简单的示例,讨论如何利用OushuDB提供的特性,在Hadoop上建立数据仓库系统.本篇说明示例的业务场景.数据仓库架构.实验 ...

  5. 从数仓到数据中台,谈技术选型最优解

    本文根据颜博老师在[Deeplus直播第218期]线上分享演讲内容整理而成. 颜博 马蜂窝数仓研发总监 现任马蜂窝数据仓库团队负责人,曾供职于京东.IBM.亚信等公司. 数据行业老兵一名,历经传统数据 ...

  6. Apache Doris在美团外卖数仓中的应用实践

    来自:美团技术团队 美团外卖数据仓库通过MOLAP+ROLAP双引擎模式来适配不同应用场景.MOLAP引擎使用了Apache Kylin.ROLAP我们经过综合考虑,选择了Apache Doris.本 ...

  7. 数仓建模 项目_音乐数据项目火力全开,技能双倍提升!

    ↑ 点击上方"尚学堂"关注我们 音乐数据中心数仓综合项目 1项目介绍 音乐数据中心项目是大型企业级综合数仓项目,此项目针对音乐数据进行分析,构建数据仓库,建立用户.机器.内容等主题 ...

  8. Apache Flink不止于计算,数仓架构或兴起新一轮变革

    作者 | 蔡芳芳 采访嘉宾 | 王峰(莫问) 维基百科的"Apache Flink"词条下,有这么一句描述:"Flink 并不提供自己的数据存储系统,但为 Amazon ...

  9. ODS DWD DWS ADS 数仓分层

    数仓分层 ODS:Operation Data Store 原始数据 DWD(数据清洗/DWI ) data warehouse detail 数据明细详情,去除空值,脏数据,超过极限范围的明细解析 ...

最新文章

  1. SpringBoot 整合 Shiro 实现动态权限加载更新+ Session 共享 + 单点登录
  2. python语言依赖平台吗_在大型项目上,Python 是个烂语言吗?
  3. 用Windows Live Writer离线写博客
  4. 第一份工作是选择安逸,还是勇敢尝试?
  5. VTK:模型之CappedSphere
  6. [Qt教程] 第34篇 网络(四)FTP(二)
  7. 获取当前Tomcat实例的端口
  8. 在JDK 8中连接字符串
  9. Python中class的简单介绍
  10. 拳王虚拟项目公社:闲鱼知乎引流售卖虚拟资源的虚拟兼职副业项目实操
  11. Linux一个cpu有多少个vector,C++中vector容器大小增长规律浅析
  12. keil5 配置 stm32f103rc 软件仿真
  13. 大数据的核心价值表现在哪里
  14. 红旗6.0 sp2 永中office2009不能启动的原因
  15. 阿里矢量图标及其引入方式
  16. 阿里巴巴开发手册强制使用SLF4J作为门面担当的秘密,被我发现了
  17. 五子棋游戏初次编写尝试
  18. Git Gui界面出现中文乱码的设置方法
  19. 172Echarts - 象形柱图(Dotted bar)
  20. 计算机技术与软件业余资格测验证书,在大学能否领到网络工程师资格证?网络工程师考核..._出版资格_帮考网...

热门文章

  1. (7)JavaScript字面量
  2. jqgrid columnChooser列的自定义及存储和获取
  3. 实践 | kafka 基本使用
  4. HTML5 画布变换
  5. Python依赖文件requirements.txt的生成和安装
  6. 快速排序查询第k大元素C语言,快速排序和查找第K大元素
  7. 机器学习花朵图像分类_在PyTorch中使用转移学习进行图像分类
  8. 解决移动端touch事件与click冲突的问题
  9. Android清空Fragment回退栈
  10. 从进程组、会话、终端的概念深入理解守护进程