为什么重新启动 influxdb 后读取访问需要时间?

问题描述

所以每当我们重新启动 influxdb 时,我们注意到 grafana 需要很长时间才能从 influxdb 重新连接/读取数据。(最多约 10 米)

但是,在写入数据和访问 /health 端点时,数据库在大约 2-3 分钟内可用。

为什么在重启 DB 服务/进程后,DB 需要更长的时间来服务读取?

是否与WAL flushing有关,但为什么会影响读取?

日志上也没有任何指示。

Influxdb:1.7

解决方法

Influx 可用于写入如此之快,因为它能够加载 WAL,然后可以在加载新数据点时填充内存数据库。因此,在启动时,在系统能够快速处理新写入之前,几乎不需要发生任何事情。但是即使 WAL 中的所有点都被刷新到永久存储,系统需要对索引文件进行组织和压缩,这是一项代价高昂的操作,并且必须在常规读取按预期执行之前完成。

在 Influx 的早期,这更像是一个问题,当时对于具有更多系列或更长键的大型数据库,启动时间很容易超过一个小时。多年来它一直在调整,所以你真的应该把 10 分钟视为一种祝福而不是麻烦的迹象。