GaussDB(DWS)的作业监控与应用

举报
门前一棵葡萄树 发表于 2023/12/26 15:39:12 2023/12/26
【摘要】 一、历史背景1.1 作业监控的历史熟悉GaussDB(DWS)的同学可能知道,DWS中作业监控呈现一种“百花齐放,百家争鸣”的态势。涉及作业监控的视图繁多,且各自为政。导致用户掌握难度大,给业务应用和问题定位带来很大困难。涉及作业监控的常见视图包括但不限于(此处仅列举实时监控):序号视图名称备注1pg_stat_activity显示当前CN上当前用户的会话相关信息,包含idle会话2pgxc...

一、历史背景

1.1 作业监控的历史

熟悉GaussDB(DWS)的同学可能知道,DWS中作业监控呈现一种“百花齐放,百家争鸣”的态势。涉及作业监控的视图繁多,且各自为政。导致用户掌握难度大,给业务应用和问题定位带来很大困难。涉及作业监控的常见视图包括但不限于(此处仅列举实时监控):

序号 视图名称 备注
1 pg_stat_activity 显示当前CN上当前用户的会话相关信息,包含idle会话
2 pgxc_stat_activity 显示所有CN上当前用户的会话相关信息,包含idle会话
3 pg_session_wlmstat 显示当前CN上当前用户执行的正在运行的作业负载管理信息
4 pgxc_session_wlmstat 显示所有CN上当前用户执行的正在运行的作业负载管理信息
5 gs_wlm_session_statistics 显示当前CN上正在执行的作业资源使用信息
6 pgxc_wlm_session_statistics 显示所有CN上正在执行的作业资源使用信息
7 pg_thread_wait_status 显示当前CN/DN上所有线程阻塞等待情况
5 pgxc_thread_wait_status 显示所有CN/DN上所有线程阻塞等待情况

1.2 用户诉求

涉及作业监控的视图繁多,导致现网定位时很容易手忙脚乱,同时因为很多信息需要多个视图关联,现场写SQL还可能影响故障恢复时效性。可不可以提供一个视图,就能完整展示用户和问题定位所需的常用信息呢?基于这个理念和现网经验,我们设计了作业监控DFX视图。

二、作业监控DFX视图

鉴于作业监控现状和用户诉求,在8.2.1版本设计实现作业监控DFX视图:gs_query_monitor,用于展示所有CN上正在执行的作业运行/排队信息以及资源使用信息。

视图包含字段如下:

名称

类型

描述

usename

name

执行该查询的用户名称。

nodename

name

执行该查询的CN名称。

nodegroup

name

执行该查询的集群名称,默认集群显示“installation”。

rpname

name

该查询关联的资源池名称。

priority

name

查询当前优先级,包含Rush/High/Medium/Low四个优先级。

xact_start

timestamp

查询所属事务的开启时间。

query_start

timestamp

查询执行开始时间。

block_time

bigint

作业累积已排队时间,存储过程、多语句可能多次排队。单位:秒。

duration

bigint

作业已运行时间,不包含排队时间。单位:秒。

query_band

text

显示作业标识,可通过GUC参数query_band设置,默认为空。

attribute

text

作业属性:

  • Simple:简单作业;

  • Complicated:复杂作业。

作业进入资源池管控前无意义,只有进入或已完成资源池管控该字段才有意义。

lane

text

作业排队/执行所处的资源池车道:

  • fast:快车道;

  • slow:慢车道。

作业进入资源池管控前无意义,只有进入或已完成资源池管控该字段才有意义。

status

text

作业当前状态,包含pending/running两种可能状态。

queue

text

作业排队信息:

  • None:作业正在运行;

  • Global:作业在CN全局并发队列排队;

  • Respool:作业在资源池队列排队;

  • CCN:作业在CCN排队。

used_mem

integer

作业在所有DN上内存峰值的最大值,单位:MB。

estimate_mem

integer

作业估算内存,单位:MB。

used_cpu

double precision

作业开始运行至今,占用CPU核数的平均值。

read_speed

integer

作业当前在所有DN上逻辑IO读速率的平均值,单位:KB/s。

write_speed

integer

作业当前在所有DN上逻辑IO写速率的平均值,单位:KB/s。

send_speed

integer

作业开始运行至今,在所有DN上网络发送速率的平均值,单位:KB/s。

recv_speed

integer

作业开始运行至今,在所有DN上网络接收速率的平均值,单位:KB/s。

dn_count

bigint

执行该作业的DN数量。

stream_count

bigint

作业在所有DN上stream线程的数量之和。

pid

bigint

后端线程ID。

lwtid

integer

后台线程的轻量级线程号。

query_id

bigint

查询ID。

unique_sql_id

bigint

归一化的Unique SQL ID。

query

text

正在执行的查询。

gs_query_monitor视图不仅可以显示作业属性、排队运行信息以及资源使用信息,还可以显示作业包含的STREAM线程数,正在执行该作业的DN数。

同时为了提高可读性,对其中某些字段含义进行了归一化显示,比如:

queue字段展示排队信息,显示为None即代表没有排队,正在运行;显示为Global代表CN全局队列排队,显示为Respool代表CN资源池排队,显示为CCN代表在CCN节点排队(CCN全局内存/CCN资源池排队)。对比原来pgxc_session_wlmstat视图中字段可读性提升明显。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。