BE节点磁盘io很高,主要是写io很高

【详述】目前4台be节点,每台节点1块hdd盘和1块ssd盘,之前hdd盘的io打满每台机器扩容了1块ssd盘,扩容后io恢复正常,最近持续一周ssd盘的io也被打满,没发现有频繁大量写入操作,业务侧主要是spark的steamload方式写入数据
【业务影响】
【StarRocks版本】例如:2.5.11
【集群规模】3fe+3be(fe与be混部)
【机器信息】12C/48G
【联系方式】社区群3-Mr。xiao
【附件】
image
一台BE节点上iotop情况如下:


一台BE日志:
be.INFO_1205.tar.gz (45.6 MB)

集群上有多少个tablet 是不是主键模型居多

是的,主键模型多,现在131张表,2w多个tablet,用了428GB的存储

麻烦执行下 iotop -oP iostat -x 1 100的结果看下

lsof -p $be_pid|grep '/data1'|grep 'w'

这里/data1需要改成vdc对应的挂载目录

lsof -p $be_pid|grep '/data1’|grep 'u’再看下这个


目前看起来主要是index的写将磁盘打满了,主键模型的表都有分区没?

另外看下top的写流量多大,多执行几次

lsof -p $be_pid|grep '/data1’|grep ‘w’|sort -k7 -rn|head

lsof -p $be_pid|grep '/data1’|grep ‘u’|sort -k7 -rn|head

主键模型的表大部分没有建分区,都是直接用的


data1的盘上存储了14张主键模型的表,一张千万的表,这个有建分区,还有一张百万级的表,没有分区,剩下的表基本上都是几万几十万的数据量,也都没有分区

show tablet xxx,看下这些是不是一个表的

我看了下lsof -p $be_pid|grep '/data1’|grep ‘u’|sort -k7 -rn|head一直出现的index文件对应的表,是主键模型,表的数据量在20w+,其中表的last_flag字段加了bitmap索引,业务侧通过spark任务几分钟执行一次delete from where last_flag=xxx,删除的数据量差不多2万左右,然后再insert 2w条数据。我把这个last_flag字段的bitmap索引给删除了,磁盘io立即就降下来了。这样使用是有什么问题吗?

之前监控看写io基本达到300MB/s,删除这个bitmap索引之后,现在写IO降到10MB/s以下了,就这一个索引有点夸张啊

这个问题我们跟进分析下

只是删除的last_flag的bitmap索引IO就降下来了吗?看下last_flag这一列的基数是多少?

是的,删除这个bitmap索引io非常明显的降下来了,ssd盘的写io从之前的平均300MB/s直接降到了10MB/s以下。last_flag这个字段一共30w左右的量,只有0或者1两个值,0值差不多20多万,1值几万的量,这个表数据量基本上稳定在这个数值。业务侧每几分钟会delete last_flag=1,跟着再insert进去一些数据同时也会更新last_flag字段的值。

能把这张表的建表语句发我下吗?以及当时删除bitmap索引的语句

这是之前的建表语句截图

删除语句是DROP INDEX index_last_flag ON dm.dm_vehicle_location_stay;