GaussDB A(DWS)多租户资源管理配置实例
转自:https://bbs.huaweicloud.com/blogs/247849
一、使用gs_cgroup工具配置控制组
1.1 配置逻辑集群资源配额
配置标准报告的多租户控制组,父租户80%cpu配额(线下8.0版本只能用整个集群80% )、自主分析控制组 class2:analyze 50%cpu(根据需求调整)配额,标准报告控制组class1:standard 50%cpu。
- 命令
- snippet.bash
gs_ssh -c “gs_cgroup -c -N LC_B”
- 创建class控制组
- snippet.bash
gs_ssh -c "gs_cgroup -c -S findm_b_tenant -N LC_B "
- 创建workload用户组
- snippet.bash
gs_ssh -c " gs_cgroup -c -S findm_b_tenant -N LC_B -G workload_standard –g 50" gs_ssh -c " gs_cgroup -c -S findm_b_tenant -N LC_B -G workload_analyze -g 50" gs_ssh -c " gs_cgroup -u -S findm_b_tenant -N LC_B -G workload_standard –g 50" gs_cgroup -u -S class1 -G grp1 -g 30
- 修改CPU配额
- snippet.bash
gs_cgroup -u -S ${Class控制组名称} -N ${逻辑集群名称} -G ${Workload控制组名称} -g ${CPU配额} gs_ssh -c “gs_cgroup -c -N LC_B –S FINDM_B_TENANT -s 40 -G wg1 -g 20” gs_ssh -c " gs_cgroup -u -S findm_b_tenant -N LC_B -G workload_analyze –g 50"
- 查看配置文件中控制组信息
- snippet.bash
gs_cgroup –p –N LC_B select * from gs_all_control_group_info;
1.2 配置逻辑集群资源限额
增加CPU 限额 配置
gs_cgroup -u -S ${Class控制组名称} -N ${逻辑集群名称} -G ${Workload控制组名称} -g ${CPU限额} –fixed
命令示例:
- snippet.bash
gs_cgroup -u -S findm_b_tenant -N LC_B -G workload_analyze -g 50 –fixed gs_cgroup --fixed -u -S class1 -G grp1 -g 30
集群配置:
- snippet.bash
gs_ssh -c "gs_cgroup -u -S findm_b_tenant -N LC_B -G workload_analyze -g 50 --fixed" gs_ssh -c "gs_cgroup -u -S findm_b_tenant -N LC_B -G workload_standard -g 50 --fixed"
更新配额
/* gs_ssh -c "gs_cgroup -u -T findm_b_tenant -N LC_B -G workload_analyze –t 50 --fixed" */
二、多租户配置
2.1配置多租户
1.创建父租户,内存占集群内存100% (先建父租户资源池(角色绑定),后建业务租户资源池)
- snippet.sql
CREATE RESOURCE POOL findm_b_pool WITH (CONTROL_GROUP="tenant", NODEGROUP="LC_B",MEM_PERCENT=100);
2.创建业务租户,内存占父租户内存50%,复杂作业并发10。
- snippet.sql
CREATE RESOURCE POOL findm_stand_child WITH (CONTROL_GROUP="tenant:workload_standard", NODEGROUP="LC_B",MEM_PERCENT=50,ACTIVE_STATEMENTS=10);
自主分析的设置成50%,复杂作业并发10。
- snippet.sql
CREATE RESOURCE POOL findm_analyze_child WITH (CONTROL_GROUP="b_tenant:workload_analyze", NODEGROUP="LC_B",MEM_PERCENT=50,ACTIVE_STATEMENTS=10);
示例:
2.2用户关联多租户(关联业务用户)
1.创建角色关联父租户(必须,所有业务用户都关联到该角色)
CREATE ROLE stand RESOURCE POOL '_pool' NODE GROUP "LC_B" NOLOGIN PASSWORD DISABLE;
2.创建用户关联业务租户
CREATE USER {分析用户} PASSWORD 'xxxxx' RESOURCE POOL 'standard_pool' NODE GROUP "LC_B" USER GROUP 'stand';
3.将已存在用户关联业务租户
ALTER USER {分析用户} RESOURCE POOL 'analyze_child' NODE GROUP "LC_B" USER GROUP 'stand';
示例:
ALTER USER qtest RESOURCE POOL 'stand_child' NODE GROUP "LC_B" USER GROUP 'stand'; ALTER USER distest RESOURCE POOL 'analyze_child' NODE GROUP "LC_B" USER GROUP 'stand';
三、GaussDB 异常规则
3.1异常规则清单
3.2配置异常规则
序号 | 作用 | 规则名称 | 配置命令 |
—- | ——— | ————– | ———————————————————— |
1 | CPU倾斜率 | cpuskewpercent | gs_ssh -c "gs_cgroup -N LC_B -S findm_b_tenant -G workload_analyze -E "cpuskewpercent=50,qualificationtime=3200" -a " |
2 | 执行时间 | elapsetime | gs_ssh -c "gs_cgroup -N LC_B -S findm_b_tenant -G workload_analyze -E "elapsedtime=2400" -a " |
3 | 阻塞时间 | blocktime | gs_ssh -c "gs_cgroup -N LC_B -S findm_b_tenant -G workload_analyze -E "blocktime=1200" -a " |
4 | 落盘空间 | spillsize | gs_ssh -c "gs_cgroup -N LC_B -S findm_b_tenant -G workload_analyze -E "spillsize=10240" -a " |
四、GaussDB单作业限制
query_max_mem 是执行作业所能够使用的最大内存,如果设置的query_max_mem值大于0,当作业执行时所使用内存超过该值时,将报错退出。
1.整个集群设置内存限制作为缺省值(如非标报告):
gs_guc reload -Z coordinator -Z datanode -N all -I all -c "query_max_mem=value"
2.标准报告 通过 set query_max_mem=0不限制
gs_cgroup –P 查看当前节点资源池挂载情况
gs_cgroup –h 可以查看帮助
错误处理
需要重新挂载cgroup
卸载cgroup
sudo /opt/huawei/Bigdata/mppdb/core/bin/gs_cgroup -U omm –d
装载cgroup
gs_cgroup -U omm -H /opt/huawei/Bigdata/mppdb/core –c
打赏作者以资鼓励: