暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB A 异常处理(查询规则)

墨天轮 2019-10-12
1167

异常处理(查询规则)

背景信息

GaussDB 200支持对异常的作业执行终止或者降级操作。系统通过设置控制组参数来进行异常处理。异常阈值如表1中所示。

表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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论