问题描述
因此,我在使用http_pooler的小型JSON输入上遇到了OOM问题。调试时,我缺少了至关重要的信息,主要是Logstash如何处理管道。
管道配置:
- 输入:http_poller到返回json(10MB)的http资源
- 过滤器:json,将json(分成大约2000个对象),每个对象中每个字段的某些突变
- 输出:elasticsearch
这里的主要问题是,Logstash是否将输入加载到内存中,是否根据我选择的json字段将其拆分来对其进行处理,然后在每个拆分的“行”上执行输出,还是需要处理?整个过滤器,然后将其推出以输出?
我一直在寻找有关“ periodic_flush”的信息,但似乎它没有按照我想的去做。
解决方法
输入将读取整个JSON并将其作为单个事件进行处理。
在旧版本的split中,如果split目标与源目标相同,则将克隆整个对象,而不是删除大字段,对其进行迭代,然后克隆不包含该大字段的小得多的对象。就堆使用而言,这是完全不同的。
此issue已修复。 PR已在2020年1月合并到主线程中。您的logstash版本何时发布?