数据仓库服务 GAUSSDB(DWS)-动态负载管理下的CCN排队:处理方法

时间:2024-11-02 18:44:29

处理方法

  • 场景一:语句估算内存过大,造成排队。
    • 查询pg_session_wlmstat视图,查看状态为running的语句是否个数很少,而且statement_mem字段数值是否较大(单位为MB,一般认为大于max_dynamic_memory 1/3即为大内存语句)。如果都符合就可以判断是此类语句占据内存导致整体运行缓慢。
      1
      SELECT usename,substr(query,0,20),threadid,status,statement_mem FROM pg_session_wlmstat where usename not in ('omm','Ruby') order by statement_mem,status desc;
      

      如上图所示,只有最后一个语句是running状态,其余语句都是pending状态。根据statement_mem可以看到该语句占据2576MB内存。此时根据语句的threadid,执行以下命令终止对应的查询语句,终止后即可释放资源,其余语句正常运行。
      1
      SELECT pg_terminate_backend(threadid); 
      
  • 场景二:所有语句状态都是pending状态,没有运行的语句。此时应是管控机制出现异常,直接终止所有线程,即可恢复正常。
    1
    SELECT pg_terminate_backend(pid) FROM pg_stat_activity where usename not in ('dbadmin','Ruby');
    
support.huaweicloud.com/trouble-dws/dws_09_0106.html