问题描述
所以每当我们重新启动 influxdb 时,我们注意到 grafana 需要很长时间才能从 influxdb 重新连接/读取数据。(最多约 10 米)
但是,在写入数据和访问 /health 端点时,数据库在大约 2-3 分钟内可用。
为什么在重启 DB 服务/进程后,DB 需要更长的时间来服务读取?
是否与WAL flushing有关,但为什么会影响读取?
日志上也没有任何指示。
Influxdb:1.7
解决方法
Influx 可用于写入如此之快,因为它能够加载 WAL,然后可以在加载新数据点时填充内存数据库。因此,在启动时,在系统能够快速处理新写入之前,几乎不需要发生任何事情。但是即使 WAL 中的所有点都被刷新到永久存储,系统需要对索引文件进行组织和压缩,这是一项代价高昂的操作,并且必须在常规读取按预期执行之前完成。
在 Influx 的早期,这更像是一个问题,当时对于具有更多系列或更长键的大型数据库,启动时间很容易超过一个小时。多年来它一直在调整,所以你真的应该把 10 分钟视为一种祝福而不是麻烦的迹象。