我正面对
超出每个标签限制的最大值
通过指定批量大小和轮询间隔尝试通过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)
答案 0 :(得分:3)
今天发生了这个问题。原因很简单,你不能定义太多不同的标签值。
以下引自官方文件:
每个标记键允许的最大标记值数。默认设置为100000.将设置更改为0,以允许每个标记键无限数量的标记值。
这个号码与 series-cardinality 相关联。 过高的系列基数可能会杀死涌入进程并导致其他损坏,例如OOM。
最后抱歉英语不好。希望它能帮到你
答案 1 :(得分:0)
我遇到了类似的错误。我更改了每个标签的最大价值= 0 ,仍然遇到相同的错误。然后我更改了 max-series-per-database = 0 ,但仍然没有不行。
但是最终我发现,如果您减少每个数据库的度量数以及每个度量的行数,则不会发生此错误。
一旦我每个数据库的测量数量超过40-50,我就开始出现此错误。因此,为了减少测量次数,我使用了 Tags ,并且还确保每18小时(大约在有10万行记录时)刷新我的数据库(删除以前的值)它)。
我不是这方面的专家,但是对我有用。希望它也对您有用。