Logstash如何处理http池中的事件->;json->;分裂

Logstash如何处理http池中的事件->;json->;分裂,logstash,logstash-configuration,Logstash,Logstash Configuration,所以我在使用http_pooler的小JSON输入上遇到了OOM问题。在调试这段代码时,我遗漏了一条关键信息,主要是Logstash如何处理管道 管道配置: 输入:返回json(10MB)的http资源的http_轮询器 过滤器:json,将json(分成大约2000个对象),每个对象中每个字段上的一些变化 输出:elasticsearch 这里的主要问题是,Logstash是否将输入加载到内存中,根据我选择的json字段对其进行拆分,然后在每个拆分的“行”上执行输出,还是需要处理整个过滤器

所以我在使用http_pooler的小JSON输入上遇到了OOM问题。在调试这段代码时,我遗漏了一条关键信息,主要是Logstash如何处理管道

管道配置:

  • 输入:返回json(10MB)的http资源的http_轮询器
  • 过滤器:json,将json(分成大约2000个对象),每个对象中每个字段上的一些变化
  • 输出:elasticsearch
这里的主要问题是,Logstash是否将输入加载到内存中,根据我选择的json字段对其进行拆分,然后在每个拆分的“行”上执行输出,还是需要处理整个过滤器,然后将其推出输出


我一直在查找有关“定期刷新”的信息,但它似乎没有执行我认为它可能执行的操作。

输入将读取整个JSON并将其作为单个事件处理

在旧版本的split中,如果拆分目标与源相同,则克隆整个对象,而不是删除大字段,在其上迭代,然后克隆不包含大字段的小得多的对象。就堆的使用而言,这是一个很大的不同


这个问题已经解决了。PR于2020年1月并入主线程。你的logstash版本是什么时候发布的?

因此,进一步的研究让我相信,logstash在使用拆分过滤器时,将克隆每个拆分的初始事件,因此我可能会在内存中查看2000倍10MB的数据…2020年8月18日,6.8.12,我应该运行一个版本发布,这是PR.Oh,我确实从你在elastic.co上的帖子中学到了很多东西!:)