超出每个标签限制的错误最大值 InfluxDB

Error Max values per tag limit exceeded InfluxDB

我正面临

max values per tag limit exceeded

尝试通过指定批量大小和轮询间隔通过 Java 将 200k 点写入 Influx DB(版本 1.2.4)时出现问题。我也在 /etc/influxdb/influxdb.conf 中设置了 max-values-per-tag = 0 但仍然面临以下问题。

SEVERE: Batch could not be sent. Data will be lost
org.influxdb.InfluxDBException: {"error":"partial write: max-values-per-tag limit exceeded (100453/100000): measurement=\"samplemeasurement\" tag=\"sampletag\" value=\"samplevalue99195\" dropped=806"}
    at org.influxdb.impl.InfluxDBImpl.execute(InfluxDBImpl.java:511)
    at org.influxdb.impl.InfluxDBImpl.write(InfluxDBImpl.java:312)
    at org.influxdb.impl.BatchProcessor.write(BatchProcessor.java:248)
    at org.influxdb.impl.BatchProcessor.run(BatchProcessor.java:278)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access1(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:748)

出现这个问题today.The原因很简单,不能定义太多不同的标签值。

以下内容转自官方文档:

每个标签键允许的最大标签值数。默认设置为 100000。将设置更改为 0 以允许每个标签键的标签值数量不受限制。

因为这个数字与 系列基数 有关。 系列基数太高可能会杀死 influxdb 进程并导致其他损坏,例如 OOM。

最后对不起可怜的English.Hope它会帮助你

我遇到了类似的错误。我更改了 max-values-per-tag = 0,但我还是得到了相同的 error.Then 我更改了 max-series-per-database = 0,还是不行。

但最终我发现,如果您减少每个数据库的测量数量以及每个测量中的行数,则不会发生此错误。

一旦每个数据库的测量数量超过 40-50,我就开始收到此错误。因此,为了减少测量次数,我使用了 Tags 并确保我的 数据库每 18 小时刷新一次(删除以前的值)(大约在它有 10 万行)。

我不是这方面的专家,但它对我有用。希望它也适合你。