故障修复集锦-记一次StarRocks导入导致be频繁OOM

现象

  • 从4个节点扩容到7个节点
  • 发起了一次300G数据的导入后,
  • 7台中有3个be进程持续OOM造成进程重启

调查过程

监控

  • 系统监控到,64G的内存,几分钟便OOM

系统日志

 
  

dmesg -T里能看到类似这样的东西:

out of memory kill process dorisdb_be score 977 or sacrifice child

Compaction score

执行如下指令看到5千多的score:

grep "highest_score=" be.INFO | tail -100

尝试恢复be进程

be.conf里假如max_compaction_concurrency=0这个参数,禁止了compaction,停止了上游的导入任务,重启be后,不再OOM

定位根因

  • 找了一个上面score高的tablet,通过show tablet,发现1个分片就有300G (官方推荐每个分片调整到1-10G效果最好)
  • 经过分析,发现hash key列建表时数据类型用错了,导致导入的都是null值,使得数据全部倾斜到1个分片上

后续

通过指令,强制删除这张表,然后调整表字段类型,重新建表和导入,问题解决

drop table force 表名

你可能感兴趣的:(java,开发语言,后端)