InfluxDB 2.0 Killed by OOM



我对InfluxDB很陌生,最初我安装了1.8版本,但后来升级到v2.0。我认为这是一种开箱即用的方法,目前,我可以使用https://github.com/influxdata/influxdb-client-phpPHP客户端库和批处理5000,超时30秒。

我创建了两个具有24小时保留期的bucket,一个用于15分钟间隔数据,另一个用于60分钟间隔数据。该插入速率约为每小时2100万。目前没有其他查询在服务器上运行。

我还没有考虑基数,我试图先向下实现,然后优化路径,并期望摄入运行缓慢但不会崩溃。以下是虚拟机上htop的快照,显示InfluxDB的资源利用率。它持续使用大量RAM,在运行6小时后被OOM Killer杀死。

以下是Htop输出的快照

您定义的模式是什么?您应该首先检查您的序列基数,以减少资源的使用,因为您插入了大量的数据。InfluxDB使用TSI作为时间序列索引,它将频繁访问的数据拉入内存。级数基数可以通过以下公式计算:

series_cardinality = num_of_bucket * num_of_measurement * num_of_values_of_each_tag * num_of_field_keys

如果您有无限制的标记或测量值,这将导致失控的序列基数。因此,只要选择一个近似的模式,或者限制标签和测量值,就可以改进所需的资源。

当您还是influxdb的新手时,我建议您考虑其他选择。高基数问题在时间序列数据库的世界中非常常见,并且大量涌入在这里显示出平庸的结果。看起来你们提到的库使用了流入线协议,所以你们可以试试VictoriaMetrics。看一篇关于摄入或高基数基准的文章,看看我为什么建议切换。

最新更新