GaussDB (DWS)配置CPU限额未限制住CPU如何排查处理
DWS限制CPU使用是通过操作系统的cgroup限制,要限制CPU使用需要配置CPU限额。
1.首先需要排查是否配置了CPU限额。在控制台资源管理可看到资源池配置。
2.资源池中语句分快车道和慢车道,估算内存小于32MB的语句会走快车道,其余进慢车道。快车道语句不受CPU管控,慢车道才受CPU管控。
select a.coorname,a.usename,a.pid,w.lane,a.query_id,a.query from pgxc_session_wlmstat w join pgxc_stat_activity a on w.nodename=a.coorname and w.threadid=a.pid where a.usename != 'omm' and a.usename != 'Ruby';
lane代表语句走的是快车道还是慢车道,如果需要限制用户所有语句都受CPU管控可以通过alter user xxx set wlm_query_accelerate = 0;使快车道的作业都走到慢车道。
3.如果全部走慢车道后仍限制不住CPU,需要看用户语句所在cgroup下有没有对应线程号
通过活跃视图和等待视图找到语句的resource_pool和lwtid。
select t.lwtid,t.node_name,a.usename,a.resource_pool,a.query_id,a.query from pgxc_stat_activity a join pgxc_thread_wait_status t on a.query_id = t.query_idwhere a.usename != 'omm' and a.usename != 'Ruby' and t.query_id != 0;
查看资源池在操作系统中cgroup名字,当前环境是在Class_b的batch group下
select * from pg_resource_pool;
omm或Ruby登录CPU高的节点,gs_cgroup –P查看语句的lwtid是否在,如果存在说明受到CPU管控限制,如果不存在则不受CPU管控
4.检查cgroup配置是否频繁刷新
Cgroup配置是在/sys/fs/cgroup目录下,如果应受管控的语句未被管控,可以查看cgroup配置的时间是否存在刷新,本例父控制组是Class_b,子控制组是batch所以路径如下。
如果存在刷新动作,可以找到检查cgroup动作并注释
老版本该脚本中检查cgroup前会判断OS版本,不同的OS cgroup配置路径存在差异,但检查OS版本时没有正确返回系统cgroup的配置路径,导致检查cgroup认为cgroup配置丢失,触发重新配置动作,导致cgroup频繁刷新,对应cgroup无法限制住CPU使用。
- 点赞
- 收藏
- 关注作者
评论(0)