performance - 如何减少 Logstash 内存使用量

标签 performance memory-management logstash logstash-configuration logstash-file

我正在使用在独立系统(无云或集群)中运行的 Logstash-5.6.5(在 Windows 中)。计划查看一些日志文件并将其发布到本地运行 elasticsearch。但是当检查 Logstash 的内存使用情况时,没有配置来查看任何文件,它显示大约 600MB 内存使用情况。当我进一步添加输入文件管道配置时,它会进一步添加内存(为了观看 3 个日志文件,它添加了多达 70MB,但我计划添加更多多达 20 个日志)。
1. 这是预期的行为吗?
2. 有什么办法可以减少logstash占用的大量内存?

最佳答案

经过几天的研究,下面是我对我的问题的回答。

以下是我们可以优化 Logstash 内存的方法:

  • Logstash 内存使用主要由堆大小累积。这可以通过在环境变量中设置堆内存大小来有效控制。 LS_JAVA_OPTS 如下所示,在启动 Logstash 之前(在我的情况下为 Windows 版本):
    set "LS_JAVA_OPTS=-Xms512m –Xmx512m"
    

  • 否则可能这可以添加在 setup.bat 文件的开头。

    通过这种方式,我将 Logstash 的总内存使用量限制为最大 620 MB。
  • Logstash 管道配置(输入/过滤器/输出)可以使用提到的方法进行优化 here .

  • 通过这种方式,我断言我的 Logstash 过滤器配置是否经过优化。
  • 此外,可以使用以下几个属性来优化管道输入文件配置以忽略/关闭旧日志文件,如 here 所述。 ,这将防止不必要地创建管道线程。
  • ignore_older - 以秒为单位 - 完全忽略任何早于给定秒数的文件
  • max_open_files - in numbers - 优化打开文件的最大数量
  • close_older - 以秒为单位关闭旧文件
  • exclude - 不需要的文件名数组(带或不带通配符)

  • 在我的情况下,我只需要观看最近的文件而忽略旧文件,我已相应地设置了如下配置:
    input {
      file {
        #The application log path that will match with the rolling logs.
        path => "c:/path/to/log/app-1.0-*.log"
        #I didn't want logs older than an hour.
        #If that older file gets updated with a new entry 
        #that will become the new file and the new entry will be read by Logstash
        ignore_older => 3600 
    
        #I wanted to have only the very recent files to be watched. 
        #Since I am aware there won't be more then 5 files I set it to 5.
        max_open_files => 5 
    
        #If the log file is not updated for 5 minutes close it. 
        #If any new entry gets added then it will be opened again.
        close_older => 300 
      }
    }
    

    关于performance - 如何减少 Logstash 内存使用量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48576637/

    相关文章:

    c# - 在 C# 中执行您自己的代码运行时分析

    Android Studio 消耗大量 RAM

    java - 将全局静态变量声明为 null 是一个好习惯吗?

    c++ - 你还在 C++ 程序中捕获内存分配失败吗?

    elasticsearch - 如何在Logstash中使用grok或gsub删除特定单词之前的字符串部分?

    java - 用大括号澄清一种方法内的单独代码部分

    javascript - C# 和 Javascript 之间的性能和内存差异?

    python - Django 服务器不向 Logstash 发送日志

    elasticsearch - 错误 : index_not_found_exception

    字符串操作的Sql查询性能?