GaussDB(DWS)的作业监控与应用
一、历史背景
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 |
作业属性:
作业进入资源池管控前无意义,只有进入或已完成资源池管控该字段才有意义。 |
lane |
text |
作业排队/执行所处的资源池车道:
作业进入资源池管控前无意义,只有进入或已完成资源池管控该字段才有意义。 |
status |
text |
作业当前状态,包含pending/running两种可能状态。 |
queue |
text |
作业排队信息:
|
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视图中字段可读性提升明显。
- 点赞
- 收藏
- 关注作者
评论(0)