GaussDB创建租户时有时候会遇到这种情况,举个例子,在界面上创建一个,父租户,配额20%,再创建一个父租户,配额50%,点击确定出现报错,报错如下:

image.png

CPU的配额,父租户总共可以分配80%,子租户从父租户进行重新分配。此时一共70%,就出现了报错的情况,需要去后台排查。

1)连接后台数据库,查询select * from pg_resource_pool; 此视图可以查看到当前的各个资源池以及控制组配额,其实一个租户,在后台就对应一行数据:

image.png

如上图所示,可以看到control_group这一行的控制组,class_a,class_b明显不是系统创建

接下来退出数据库,用gs_cgroup -p查询对应的 class_a,class_b分别占用多少cpu配额:

image.png

举例,如图所示,可以看到有class_a占用20配额,但是这个控制组是在后台创建,由于总体所有租户配额不能超过80%,所以界面已有20%的一个租户,加上后台的class_a也是20%,然后再创建50的租户时,就已经20+20+50=90,大于了租户创建最大配额,所以会报错失败。

处理方法:

使用命令在后台清理掉手动创建的控制组:

gs_ssh -c “gs_cgroup -d xxx”

使用gs_ssh是因为,cgroup是在每个节点都有的,所以要在每个节点都清理掉,才能确保新的控制组在每个节点都有配额可以进行分配,保证租户创建成功。

删除掉多余的控制组之后,就可以保留充分的配额,使界面创建成功。