今天一个用户出现BE(用户使用的是0.14.13.1这个版本) 启动之后,过一会就会挂掉,be.out也没有错误信息,不知道什么问题造成的。因为之前是正常的,我们首先想到的是不是OOM了,我通过下面的命令查看:
dmesg -T
然后就看到了下面的信息
Memory cgroup out of memory: Kill process 7187 (doris_be) score 1007 or sacrifice child
确认是OOM问题,这个时候我们要知道是什么引发的OOM,我打开了 top -H 命令,
然后看到有BE compaction的任务运行,内存飙升的很快,可以确定是因为某些 tablet compaction造成了这错误,我们这个时候就要找出是哪个tablet 引发的然后去处理,我们通过 BE 的日志找出这个tablet:
grep "permits" log/be.INFO |tail -n 100
我们找到 permits 较大的一个任务对应的 tablet id,如下图permit 为 4096 的任务的 tablet id 为 5103093,然后继续分析这个 tablet 的 compaction 情况。
通过 MySQL 客户端连接 Doris 集群后,执行:
show tablet 5103093
我们看到了下面的信息
TableName 是空,其他的信息也是不对的,这样反而是好处理的
处理方法就是将这个节点的tablet 删除掉,使用meta_tool 工具
./lib/meta_tool --operation=delete_meta --root_path=/path/to/root_path --tablet_id=xxx --schema_hash=xxx
这里的schema_hash 值对应的就是上面查看permits命令返回信息里tabletid后面那一串数字,
删除这个tablet之后,在重新启动这个be ,服务恢复正常
其他版本的Doris 出现类似问题也可以参照这个来进行解决