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

时间:2017-07-25 12:08:37

标签: influxdb

我正面对

  

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

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

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$2.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.access$201(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)

2 个答案:

答案 0 :(得分:3)

今天发生了这个问题。原因很简单,你不能定义太多不同的标签值。

以下引自官方文件:

每个标记键允许的最大标记值数。默认设置为100000.将设置更改为0,以允许每个标记键无限数量的标记值。

这个号码与 series-cardinality 相关联。 过高的系列基数可能会杀死涌入进程并导致其他损坏,例如OOM。

最后抱歉英语不好。希望它能帮到你

答案 1 :(得分:0)

我遇到了类似的错误。我更改了每个标签的最大价值= 0 ,仍然遇到相同的错误。然后我更改了 max-series-per-database = 0 ,但仍然没有不行。

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

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

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