Linux Logstash不关闭文件描述符

Linux Logstash不关闭文件描述符,linux,logstash,file-descriptor,Linux,Logstash,File Descriptor,我正在使用logstash2.2.4。 我的当前配置 input { file { path => "/data/events/*/*.txt" start_position => "beginning" codec => "json" ignore_older => 0 max_open_files => 46000 } } filter { if [type] not in ["A", "B", "C"] {

我正在使用logstash2.2.4。 我的当前配置

input {
  file {
    path => "/data/events/*/*.txt"
    start_position => "beginning"
    codec => "json"
    ignore_older => 0
    max_open_files => 46000
  }
}
filter {
  if [type] not in ["A", "B", "C"] {
  drop {}
}
}
output {
  HTTP {
    http_method => "post"
    workers => 3
    url => "http://xxx.amazonaws.com/event"
  }
}
在一个输入文件夹中,我有大约25000个静态(从不可更新)txt文件

我将管道工人配置为16人。在所描述的配置中,LS进程运行1255个线程,并打开大约2560685个文件描述符

经过一些调查,我发现LS为输入文件夹中的所有文件保留打开的文件描述符,HTTP输出流量变得非常缓慢

我的问题是为什么LS不关闭已处理(传输)文件的文件描述符或实现某种类型的输入文件分页

也许有人遇到了同样的问题?如果是,请分享您的解决方案。
谢谢。

日志存储文件输入声明“从文件流式处理事件,通常以类似于tail-0F的方式跟踪它们,但可以选择从一开始就读取它们。”。因此,文件描述符没有关闭是正常的。谢谢你的回答,那么还有什么选择?或者解决方法?如果我理解正确,您只需要将文件内容传输到ES。在这种情况下,您可以多次这样做(可能每个文件夹一次),这样就不会出现文件描述符问题。或者,修改文件输入插件,只读取文件内容,然后停止(在ruby中)。或者抛弃日志,用你最喜欢的语言编写一个应用程序,读取文件,解析json并将所有内容发送给ES。谢谢你的帮助。实现您自己的应用程序这是我试图避免的事情。不要实现和测试许多边缘情况,如部分文件传输、网络中断时重试等。根据他的要求,我和其他开发人员正在开发LS的行为。欢迎您。感谢您提供的信息Logstash文件输入声明“从文件流式处理事件,通常以类似于tail-0F的方式跟踪它们,但可以选择从一开始就读取它们。”。因此,文件描述符没有关闭是正常的。谢谢你的回答,那么还有什么选择?或者解决方法?如果我理解正确,您只需要将文件内容传输到ES。在这种情况下,您可以多次这样做(可能每个文件夹一次),这样就不会出现文件描述符问题。或者,修改文件输入插件,只读取文件内容,然后停止(在ruby中)。或者抛弃日志,用你最喜欢的语言编写一个应用程序,读取文件,解析json并将所有内容发送给ES。谢谢你的帮助。实现您自己的应用程序这是我试图避免的事情。不要实现和测试许多边缘情况,如部分文件传输、网络中断时重试等。根据他的要求,我和其他开发人员正在开发LS的行为。欢迎您。谢谢你的信息