跨版本升级后,BE节点CPU异常100%

为了更快的定位您的问题,请提供以下信息,谢谢
【详述】tarrocks从2.4.5升级到了3.3版本,(3fe+3be混部)的升级之后发现有两个节点的CPU会飙升到100%,另一台就没事,这个需要怎么排查原因呢,我看top里面是be节点占用的,但是升级之前就没问题
【背景】从2.4.5一直升级到3.3
【业务影响】
【是否存算分离】否
【StarRocks版本】例如:3.3
【集群规模】例如:3fe(1 follower+2observer)+3be(fe与be混部)
【机器信息】CPU虚拟核/内存/网卡,例如:16C/64G/万兆 *2 + 24C/64G/万兆 *1
【联系方式】为了在解决问题过程中能及时联系到您获取一些日志信息,请补充下您的联系方式,例如:社区群4-小李或者邮箱,谢谢
【附件】

show variables like ‘pipeline_dop’ 看下这个参数的值,如果是0 ,可以调整为2,或者1 set global pipeline_dop = 1

不过我有个疑问,3.3比3.2占用资源多,是否跟lockmanager有关吗?

我设置了,但是没什么用,会不会是因为三台机器的CPU核数不一致导致的,但是升级之前没问题呀

最好别用异构机型,看着这些线程都是查询,可以把机器核数搞成一样的再看看,

把机器核数调整为一样的了,但是情况还是存在,需要我提供什么日志吗

be.WARNING (69.6 MB) 这是出问题的一台机器的be日志,我们是9.24升级的,2.4.5开始,逐级升到3.3版本

@Aurafin我提供了be的日志,能看得出来有什么问题吗

你这个是混部的吧,top -Hp 有很多gc 的线程的话, 给fe 适当增加内存。 be 日志里面看到有routine load 导入频率过快,这个也会消耗线程,可以调大这几个参数task_consume_second 和max_batch_interval , max_routine_load_batch_size

@Aurafin我看top -Hp,be进程的时候没看到有gc线程,只是有很多 pip_scan_com线程,CPU占用很高;
top -Hp,fe进程的时候是有bc线程的,但是fe的资源使用率很低。那像这种情况,也需要给fe加内存吗?

@Aurafin,这是什么情况,看不到回复呀

  1. 如何判断fe 是不是要加内存

在fe 的日志里面去搜MemoryUsageTracker 这个关键词,会有后面的类似日志,多看几段,看下heap 使用情况,是否接近process.如果接近需要加内存,或者查询官网提供的监控dashboard 有fe jvm 相关的内存使用监控,更直观,如果heap 使用接近设置的内存,需要考虑加内存。 2025-06-06 16:37:50.741+08:00 INFO (MemoryUsageTracker|74) [MemoryUsageTracker.trackMemory():108] total tracked memory: 46.8MB, jvm: Process used: 18.6GB, heap used: 4.4GB, non heap used: 289.1MB, direct buffer used: 395.5MB

另外be 中如果都是pip_scan_com ,可以用这个命令看下都是啥表在扫描,看下这些表的分布和副本数据是否存在倾斜

admin execute on $backend_id ‘System.print(ExecEnv.io_profile_and_get_topn_stats(“all”, 10, 5))’;

这个命令获取出来的是tablet ,show tablet $tablet_id 可以看到具体的表

  1. 如果都没问题,参考这个帖子里面的命令https://forum.mirrorship.cn/t/topic/15926

获取下pref,混部环境下区分pid

sudo perf record -g -p <be_pid>,<fe_pid> – sleep 30

获取perf 后,查看sudo perf report 看看具体在cpu 消耗高的地方是哪里,可以几台机器对比看看。

好,我们今天中午重启了两个有问题的be,目前是好的,但是跑一段时间就会产生大量扫描线程,等卡的时候我按照您说的方式来一遍排查

@Aurafin还有一个问题,我如何判断一个表的分布、分桶和副本数据是否存在倾斜呢?我们现在是3fe和3be混部在三台机器上嘛,每台机器一个fe+be,副本数都是1,分桶的话,基本上都是DISTRIBUTED BY HASH(ID) BUCKETS 4 ,表是使用cloudcanal自动创建的,基本没有配置其他的东西

SHOW PARTITIONS FROM db_test.order_list; 通过这个命令去看datasize ,一般分桶键设置不合理就会产生倾斜。 可以看下io_profile_and_get_topn_stats 访问的热点表是不是都在一台机器上,单副本存在安全性问题,混部环境下建议使用3副本。

@Aurafin 像这样的情况,属于数据倾斜吗image