数据仓库服务 GAUSSDB(DWS)-业务报错:Cannot get stream index, maybe comm_max_stream is not enough:分析过程

时间:2024-05-07 20:29:47

分析过程

  1. GUC参数comm_max_stream表示任意两个DN之间stream的最大数量。
    在CN上查询当前任意两个DN之间stream情况:
    1
    SELECT node_name,remote_name,count(*) FROM pgxc_comm_send_stream group by 1,2 order by 3 desc limit 100;
    
    在DN上查询当前DN与其他DN之间stream情况:
    1
    SELECT node_name,remote_name,count(*) FROM pg_comm_send_stream group by 1,2 order by 3 desc limit 100;
    
  2. comm_max_stream参数值必须大于并发数*每并发平均stream算子数*(smp的平方)。

    该参数默认值为:通过公式min(query_dop_limit * query_dop_limit * 2 * 20, max_process_memory(字节) * 0.025 /(最大CN数+当前DN数) / 260)计算,小于1024按照1024取值,其中query_dop_limit = 单个机器CPU核数 / 单个机器DN数。

    • 不建议该参数值设置过大,因为comm_max_stream会占用内存(占用内存=256byte*comm_max_stream*comm_max_datanode),如果并发数据流数过大,查询较为复杂及smp过大都会导致内存不足。
    • 如果comm_max_datanode参数值较小,进程内存充足,可以适当将comm_max_stream值调大。
support.huaweicloud.com/trouble-dws/dws_09_0116.html