3

我对 InfluxDB 很陌生,最初安装的是 1.8 版本,但后来升级到 v2.0。我将此视为一种开箱即用的方法,目前,我能够使用https://github.com/influxdata/influxdb-client-php为 PHP 和批处理设置插入到 influx 的客户端库5000 超时 30 秒。

我创建了 2 个具有 24 小时保留期的存储桶,一个用于 15 分钟间隔数据,一个用于 60 分钟间隔数据。这个插入率大约是。每小时2100万。目前没有其他查询在服务器上运行。

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

这是 Htop 输出的快照

4

2 回答 2

2

您定义的架构是什么?您应该首先检查您的系列基数,以减少由于大量数据插入而导致的资源使用。InfluxDB 使用 TSI 作为时间序列索引,它将经常访问的数据拉入内存。系列基数可以通过以下方式计算:

series_cardinality = num_of_bucket * num_of_measurement * num_of_values_of_each_tag * num_of_field_keys

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

于 2021-08-03T03:41:58.613 回答
0

当您还是 influxdb 的新手时,我建议您考虑替代方案。高基数问题在时间序列数据库的世界中非常常见,influx 在这里显示了平庸的结果。看起来您提到的库使用流入线协议,因此您可以尝试使用VictoriaMetrics。查看有关摄取高基数基准的文章,了解我建议切换的原因。

于 2021-08-29T18:05:46.023 回答