MEMSTORE写满后,会写入磁盘,瞬间将磁盘io打满。导致读业务受损。如何控制写入磁盘的io速率

【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】4.2.1-8BP
【问题描述】

如图,根据监控显示,主副本,每间隔一段时间,磁盘的io写吞吐量会爆满。 这期间,对业务读来说,是会明显感到卡顿的。如何控制当memstore 写满,需要写入磁盘时,往磁盘写入的速度。避免这种对业务读的短波影响。
生产集群内存配置比较高。512G的机器。分配给了OB400GB内存。
集群配置的memstore_limit_percentage = 25

2 个赞

磁盘读延时这么高,IO 吞吐能力这么低,莫非磁盘不是 nvme ssd
内存配置可以这么高,磁盘不应该配置这么低。

磁盘性能低的时候可以考虑加大 memstore_limit_percentage 内存比例,以及延迟转储时机(writing_throttling_trigger_percentage 调整到 90,freeze_trigger_percentage 调大到 70),减少落盘次数。但是一旦写到触发转储时,落盘的时候该写的数据量一样不会少,IO 还是会很卡。

2 个赞

参考庆涛老师的可以调整writing_throttling_trigger_percentage或者可以适当调小以提前触发转储,减少 MemStore 写满的风险。控制 MemStore 使用比例达到阀值时触发冻结。默认值为 70
ALTER SYSTEM SET freeze_trigger_percentage=60;

可以根据 CPU 资源情况适当增加线程数以提高转储速度
ALTER SYSTEM SET minor_merge_concurrency=10;

2 个赞

阿里云的云盘。 Auto性能突发类型的。 目前没做预配置。io总上限256MB/s

为啥我考虑的和你相反, 减小memstore_limit_percentage内存比例。 让每次落盘数据少点,减少峰值时间··· 这加大了,反而会拉长落盘时间。 业务感受更明显了··· 但这都不是彻底解决的路径。。 磁盘io性能总有上限。。

1 个赞

阿里云预配置性能拉满10w。
落盘时,写峰期间。读延迟降到了1ms。但从监控上看, 落盘对读延迟是有影响的。 目前这个延迟还能接受吧。。

1 个赞

阿里云云盘容量多大?如果容量很大,可以考虑大盘 拆小 用lvm 提升盘 io 延时性能,参考: OB 4.2 SQL 性能抖动诊断案例分享(二)

加大到想法是尽可能用内存兜住,减少一天24小时转储的次数, 或者尽可能拖到晚上低峰期 等慢慢合并。
盘太差,影响总是难以根治。

3 个赞

:+1: :+1: :+1: :+1: :+1:

前来学习一下