并发控制常用定位方法及解决措施
7.1 排队问题
出现业务阻塞、性能下降、查询无响应等类似现网问题时,通过以下方法可以排查是否排队问题并定位排队原因,同时根据排队原因给出相应规避措施。
7.1.1 确认是否排队
首先确认是否排队问题,其次排查排队原因,确认是否属于正常排队:
- 813 及以上版本查询资源池监控视图
select rpname,slow_run,slow_wait,slow_limit,used_cpu,cpu_limit,used_mem,estimate_mem from gs_respool_resource_info;
- 老版本查询作业负载视图
select resource_pool,attribute,lane,status,enqueue,sum(statement_mem) as stmt_mem,count(1) from pgxc_session_wlmstat where status!='finished' and attribute!='Internal' and usename!='Ruby' group by 1,2,3,4,5;
通过视图可以获取到各资源池快慢车道作业运行信息,据此可以判断是否排队问题:
如果有作业处于排队状态,则可能是排队导致的问题,否则排除排队问题;可能的排队原因包括:
- 单 CN 全局并发排队;
- 快车道并发排队;
- 静态慢车道并发排队;
- 静态慢车道内存排队;
- 动态 CCN 全局内存排队;
- 动态 CCN 慢车道并发排队