xiaokissoo
发布于

任务并发出现oom导致任务无法完成

➢ 问题

➢ 分析&&解答
分析:out of memory 升级前没有这个报错,观察资源队列 vsegresourcequota 设置为 2gb,这个设置比较大,事因为本身有占内存大的 SQL 使用默认值会报错,不过一般特殊 SQL 分配单独的资源队列,如果全部任务用一个资源队列计算下来一个 session 根据参数会最少一个节点启 6 个进程,每个进程 2gb 如果 20 个并发情况下最多内存=62gb20=240gb,已经非常大了。
因为之前没有报这个错,考虑是升级前调整了 seg_max_connections 为 5000,增加了节点进程数。
处理:将 seg_max_connections 回退为以前的 3000,没有出现 oom 报错。
10.3. 有部分任务随机 hang 住
➢ 问题

➢ 分析&&解答
分析:并发大的时候会有个别任务 hang 住,直到 3600 秒报错,通过日志、栈分析发现是 gp_vmem_idle_resource_timeout 参数设置不正确导致的,因为之前处理其他问题时,改过这个参数测试,改回来时设置参数错误导致,之前这个参数默认值是 18s 后来改回为 18ms,因为系统本身在任务并发大的时候有丢包现象,丢包加上这个参数设置过小会出现节点间任务退出不一致,导致节点间进程收发失败。
处理:将 gp_vmem_idle_resource_timeout 参数修改为 18s,没有出现 hang 住现象。

评论
    test