Prometheus 磁盘写入延迟过高

【 TiDB 使用环境`】生产\测试环境
【 TiDB 版本】 5.0.4/ 5.2.2
【遇到的问题】
Prometheus 所在的节点经常会每个一段时间(6h)出线高负载的磁盘IO,其中写磁盘延迟非常高,后经过排查可能是 Prometheus TSDB 的问题, 因为 Prometheus 每隔一段时间会将内存数据进行落盘,同时进行数据压缩,考虑是这一系列操作,导致短暂的磁盘写入压力过大。
参考: https://prometheus.io/docs/prometheus/latest/storage/

【复现路径】做过哪些操作出现的问题
【问题现象及影响】

上图为测试环境,机器和数据都很少,但写入延迟已经达到 5ms 左右的延时了,生产环境数据量更大,延时高达 20 - 30 ms。
现在集群会的 Prometheus 节点会不断告警 磁盘写入延迟持续超过 16ms.

通过不断的查询相关资料, Prometheus 有两个启动参数好像可以解决该问题:
–storage.tsdb.min-block-duration
–storage.tsdb.max-block-duration

有没有大佬来看一下,这两个参数是否能解决该问题?
目前我还找不到TiDB部署的Promehteus中如何查看这两个参数的值,也不知道该如何修改值,会不会对机器造成其他影响。
官方似乎不太推荐修改:https://prometheus.io/docs/prometheus/latest/storage/#longer-block-durations

如果这两个参数无法修改,有没有其他的更好的解决方法?

等一手官方大佬的回复,不过我觉着现阶段可能也没什么太好的解决方案。

1 个赞

是用的虚机吗?

那就考虑有没有瞬时并发。

考虑谁的瞬时并发? TiDB 的还是 Prometheus 的?

物理机,NVMe 的 SSD,所以我们觉得对于这个配置来说,这个写入延迟是不能接受的

关于这个问题,我在 Prometheus 的社区里得到了回答。
当集群节点和数据量的数据较大时,磁盘每隔一段时间会存在写入量过大,因为有数据的压缩和落盘,这个属于 Prometheus 的正常现象。
他们并不推荐修改任何参数来解决问题,修改参数可能会让 Prometheus 服务变的更加糟糕。
我们可以将 Prometheus 作为一个特别的节点来看待,修改该告警规则。
NODE_disk_write_latency - Prometheus server - Prometheus Monitoring System

顺便补充一下:磁盘写入延迟这个指标意义不大,重点可以看 IOPs 指标

4 个赞

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。