异常处理(查询规则)
背景信息
GaussDB 200支持对异常的作业执行终止或者降级操作。系统通过设置控制组参数来进行异常处理。异常阈值如表1中所示。
异常阈值类型 |
说明 |
取值范围(0表示取消设置) |
支持的异常操作 |
---|---|---|---|
blocktime |
作业的阻塞时间,单位秒。包括全局并发排队以及局部并发排队的总时间。 |
0~UINT_MAX |
abort |
elapsedtime |
作业的已被执行时间,单位秒。从开始执行到当前所消耗的时间。 |
0~UINT_MAX |
abort |
allcputime |
作业在所有DN上执行时所耗费的CPU总时间,单位秒。 |
0~UINT_MAX |
abort,penalty |
cpuskewpercent |
作业在DN上执行时的CPU时间的倾斜率,依赖于qualificationtime的设置。 |
0~100 |
abort,penalty |
qualificationtime |
检查作业执行cpu倾斜率的间隔时间,单位秒,需同cpuskewpercent一起设置。 |
0~UINT_MAX |
none |
spillsize |
作业在DN上下盘的数据量,单位MB。 |
0~UINT_MAX |
abort |
broadcastsize |
作业在DN上算子大表广播数据量,单位MB。 |
0~UINT_MAX |
abort |
当作业执行超过以上阈值中的某一个时,就会触发以下任意异常动作类型的操作。
- abort
作业满足设置的异常阈值后执行终止作业,可以通过参数“-a”或“--abort”指定。
- penalty
作业执行中超过设置的异常阈值后对作业执行降级操作,可以通过“--penalty”参数指定。
- 降级操作只能对Class控制组下的Timeshare分组(Low、Medium、High或Rush控制组)进行设置。
- 降级操作每次降一级,例如:作业开始时是class:Rush,满足一次降级条件后降级为class:High,第二次满足降级为class:Medium,以此类推,直到降到class:Low为止。
qualificationtime为检查作业执行CPU倾斜率的间隔时间,单位为秒。
- qualificationtime依赖于DN收集CPU使用率的间隔时间。
- DN收集CPU倾斜率的间隔时间由GUC参数cpu_collect_timer控制。cpu_collect_timer单位是秒,默认为30秒,范围1~INT_MAX,设置的太小会影响语句执行的效率,太大会影响异常处理的精度。
- qualificationtime一般可设置为等于cpu_collect_timer或者cpu_collect_timer的倍数。
前提条件
- 已参考8了解控制组的分类以及控制方式。
- 已熟悉gs_cgroup和gs_ssh的使用。
操作步骤
在GaussDB 200中,需要在每个集群节点上执行控制组的创建、更新、删除操作,才能实现对整个集群资源的控制,所以下述步骤中都使用gs_ssh命令执行。
- 以操作系统用户omm登录GaussDB 200集群任一主机。执行source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile命令启动环境变量。
- 设置“class_a”下属“workload_a1”的作业阻塞到1200秒或执行2400秒时执行终止动作。
gs_ssh -c "gs_cgroup -S class_a -G workload_a1 -E "blocktime=1200,elapsedtime=2400" -a"
- 设置“class_a”下属“workload_a2”的作业下盘数据量达到256MB或大表广播数据量达到100MB时执行终止动作。
gs_ssh -c "gs_cgroup -S class_a -G workload_a2 -E "spillsize=256,broadcastsize=100" -a"
- 设置“class_b”下属“workload_b1”的作业在所有DN上CPU总时间到达100s时执行降级动作。
gs_ssh -c "gs_cgroup -S class_b -G workload_b1 -E "allcputime=100" --penalty"
- 设置“class_b”下属“workload_b2”的作业在所有DN上执行时间到达2400秒,且倾斜率达到90时执行降级动作。
gs_ssh -c "gs_cgroup -S class_b -G workload_b2 -E "qualificationtime=2400,cpuskewpercent=90" --penalty"
说明:
- 作业执行过程中,如果修改了异常阈值,之后执行的语句会按照新的异常阈值进行处理,但是对于正在执行的语句不一定生效:
- 对于已经被执行引擎调度的作业不会使用新的异常阈值。
- 对于没有被执行引擎调度的作业,如果异常类型为spillsize、broadcastsize,使用新的异常阈值进行处理;如果异常类型为blocktime、elapsedtime、allcputime、cpuskewpercent,依然使用旧的异常阈值进行处理。
- 当作业执行超过异常阈值时,触发异常动作不一定立即生效,会受内部中断信号处理的影响。
获取指定资源池的查询规则
- 使用gsql连接数据库。
- 查看某个资源池关联的查询规则信息
1
SELECT * FROM gs_respool_exception_info('default_pool');
name | class | workload | rule | type | value ---------------------+--------------+----------+-------------------+---------+------- DefaultClass:Medium | DefaultClass | Medium | BlockTime | Abort | 0 DefaultClass:Medium | DefaultClass | Medium | ElapsedTime | Abort | 0 DefaultClass:Medium | DefaultClass | Medium | AllCpuTime | Abort | 0 DefaultClass:Medium | DefaultClass | Medium | QualificationTime | Abort | 0 DefaultClass:Medium | DefaultClass | Medium | CPUSkewPercent | Abort | 0 DefaultClass:Medium | DefaultClass | Medium | BlockTime | Penalty | 0 DefaultClass:Medium | DefaultClass | Medium | ElapsedTime | Penalty | 0 DefaultClass:Medium | DefaultClass | Medium | AllCpuTime | Penalty | 0 DefaultClass:Medium | DefaultClass | Medium | QualificationTime | Penalty | 1800 DefaultClass:Medium | DefaultClass | Medium | CPUSkewPercent | Penalty | 30
查看更多:华为GaussDB 200 租户管理「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」关注作者【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。评论
- 设置“class_a”下属“workload_a2”的作业下盘数据量达到256MB或大表广播数据量达到100MB时执行终止动作。