【 TiDB 使用环境】生产环境 , spark on k8s
【 TiDB 版本】v5.1.1 tispark 2.5 spark 3.0.1
【遇到的问题】查询tidb OOM
【问题现象及影响】
这是代码
这是提交
这是pod状态
日志
但是看监控并没有tikv挂掉
【 TiDB 使用环境】生产环境 , spark on k8s
【 TiDB 版本】v5.1.1 tispark 2.5 spark 3.0.1
【遇到的问题】查询tidb OOM
【问题现象及影响】
这是代码
这是提交
这是pod状态
日志
但是看监控并没有tikv挂掉
你截图的那个pod状态,是指的spark的executor的pod状态吧?
是的。
你这个错,不应该去tidb上找错误,应该是k8s的宿主节点内存不足,或者pod有mem的使用限制导致的oom,如果是测试,limit 10的情况下,改小EXECUTOR_MEMORY,改成2G试试。或者你导出失败节点的yaml给我,我分析一下。
绝不会是宿主机内存,我们其他任务都正常跑的。另外exec的内存我刚开始给的2g不行,加到6g还是不行,都是oom
我把 limit 10 去掉就可以了,加上limit 就不行,这是bug啊。
k8s里面有没有搭建spark的history或者你把代码里面的stop去掉,看看spark ui还活着么,发一下日志或者spark中的spark sql解析计划。
现在也没有退出,exec不断被kill又不断重启
client -> connector -> server
client 被 kill 了,server 有没有不正常? 不能提供服务?
没有,问题就在于我加上limit就不行,不加就可以
不加 limit 有多少数据会被回传到 client ? client 能不能撑得住这个量?
问题是我不加limit是正常,加了会oom
有别的环境可以跑么? 不用 pod… 验证一下到底啥问题
不加limit时候,pod内存用了多少?
不加limit用了这么多内存
对呀,你看我的截图,在k8s和yarn执行executor都会被oomkilled
就这一句还会发生shuffle??
你这是直接走的tidb层走jdbc查询也会报这个错