我有以下情况:带有JDBC输入连接器和Elasticsearch输出连接器的Logstash。数据最初加载到ES中,这意味着在加载Logstash之前不存在填充的索引。Logstash基于映射模板创建索引。Logstash和ES的版本为7.17.0。
直到最近,这种情况还很好。
问题
索引工作非常好,直到大约100万个文档。然后,新文档的索引速度迅速放缓,删除文档的数量急剧波动。它增加了很多,而且经常下降。
我知道文档是作为更新操作的一部分被删除的,以前已经是这样了。但被删除的文件数量大多在增加,并没有出现如此大的波动。在问题发生之前,加载结束时的情况约为800万个docs.count和300万个docs.deleted。目前,该数字保持在120万左右。
该场景部署在两个环境中,其中只有一个环境显示了这种行为。两者都具有相同的源和Logstash配置。环境因其ES实例而异。两个实例的配置相同。
磁盘空间良好,ES日志中没有错误。我还可以确认Logstash运行良好,并不断向ES发送批量请求。
在另一个帖子中,有人提到ES在过载场景中丢弃文档。我找不到任何证据证明这种行为,但这至少是对我所经历的一个很好的解释:插入后,Elasticsearch中的文档将自动删除
度量的时间序列
TIME 1230:
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open myindex LLC8qxSWTWyO1U25Olljlg 1 1 1182676 166056 642.3mb 642.3mb
TIME 1240:
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open myindex LLC8qxSWTWyO1U25Olljlg 1 1 1182676 533339 946.9mb 946.9mb
TIME 1300:
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open myindex LLC8qxSWTWyO1U25Olljlg 1 1 1182676 349747 701.9mb 701.9mb
TIME 1400:
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open myindex LLC8qxSWTWyO1U25Olljlg 1 1 1182678 467651 1gb 1gb
TIME 1430:
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open myindex LLC8qxSWTWyO1U25Olljlg 1 1 1182678 693906 1gb 1gb
事实上,在详细分析了Logstash之后,我们意识到Logstash由于某种原因没有更新它的元数据,因此它在无休止的循环中发送相同的数据。ES工作得非常好,这也解释了振荡删除的文档。
这似乎是一个网络问题,我们需要进一步调查。