多租户资源管理,配置了CPU限额,还是出现了单个用户的作业将CPU资源占高的情况

数据库使用过程中,有时会出现这样的情况,在OS文件系统有问题的情况下,配置了CPU限额,还是出现了单个用户的作业将资源占满的情况,具体根因是由于OS文件系统有问题的时候,会导致后台cgroup的挂载出现不稳定,从而会导致GaussDB检测挂载时,正好碰到OS异常的情况时,会对cgroup进行重新挂载,这时候会出现已经挂载好,收到CPU资源限制的语句,变成不限制的状态。

这种OS相关的问题,可能线下线上都会出现。

【问题确认】

  1. 可以使用gs_cgroup -p 查看配置情况,下图中Workload Group information中,可以看到每个租户分配了多少CPU:
  1. 可以后台使用top 1命令,查看使用率高的CPU列表,下图为正常情况,限额配置了0-15,就只能使用0-15个CPU,其余CPU保持空闲:

如下为OS异常的情况,也是一样的作业,一样的用户,可以看到CPU使用已经不受限制,所有CPU使用率都比较高:

这时候可以查看部分dn的日志,是否有如下字样:

还可以查看如下mpp-cgroupMonitor日志,路径:/var/log/Bigdata/mpp/healthCheck,执行命令:grep ‘gs_cgroup -c’ greoupCheck.log | wc -l

如果有如下字样,基本可以确定是OS文件系统问题,可采用下述方法规避:

【规避方法】

  1. 修改各个节点的mpp-cgroupMonitor.sh脚本的以下内容:

1)        脚本路径如下:

/opt/huawei/Bigdata/FusionInsight_MPPDB_8.0.0/install/FusionInsight-MPPDB-8.0.0/sbin/mpp-cgroupMonitor.sh

2)        修改前脚本如下:

 

修改其中第158行到171行内容为如下内容:

if     [ ! -d “${cgroup_cpu_dir}” ]; then

LOG “${LINENO}”     “WARN” “cgroup_cpu_dir is $cgroup_cpu_dir, does not     exist.”

fi

if     [ ! -d “${cgroup_cpuset_dir}” ]; then

LOG “${LINENO}”     “WARN” “cgroup_cpuset_dir is $cgroup_cpuset_dir, does not     exist.”

fi

if     [ ! -d “${cgroup_blkio_dir}” ]; then

LOG “${LINENO}” “WARN”     “cgroup_blkio_dir is $cgroup_blkio_dir, does not exist.”

fi

if     [ ! -d “${cgroup_cpuacct_dir}” ]; then

LOG “${LINENO}”     “WARN” “cgroup_cpuacct_dir is $cgroup_cpuacct_dir, does not     exist.”

fi

3)对于每个节点,使用root用户执行以下命令:

gs_cgroup -d -U omm && gs_cgroup -c -U omm -H $GAUSSHOME –upgrade

4)在任意节点,使用omm用户执行以下命令:

gs_ssh –c “gs_cgroup –P”  >  cgroup.log

5)查看上一步生成的cgroup.log确认没有报错之后,重启集群使cgroup配置生效。

6)执行耗费cpu的语句,验证是否cpu已经成功限制。

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/316647.html

(0)
上一篇 2025年10月29日 23:28
下一篇 2025年10月29日 23:31

相关推荐

发表回复

登录后才能评论