我正在使用在独立系统(无云或群集)中运行的Logstash-5.6.5(在Windows中)。计划观看一些日志文件并将其发布到本地运行elasticsearch。但是当检查Logstash的内存使用情况时,没有配置来监视任何文件,它显示大约600MB的内存使用量。当我进一步添加输入文件管道配置时,它会进一步增加内存(对于观看3个日志文件,它增加了70MB,但我计划添加多达20个日志)。
1。这是预期的行为吗?
2。有没有办法通过logstash减少巨大的内存使用量?
答案 0 :(得分:8)
经过以下几天的研究后,我回答了我的问题。
以下是我们优化Logstash内存的方法:
Logstash内存使用量主要通过堆大小累积。这可以通过在启动Logstash之前在下面的环境变量 LS_JAVA_OPTS 中设置堆内存大小来有效控制:(对于我的Windows版本):
set "LS_JAVA_OPTS=-Xms512m –Xmx512m"
否则可能会在文件开头的setup.bat中添加。
通过这种方式,我将Logstash总内存使用量限制为最大620 MB。
通过这种方式,我断言我的Logstash过滤器配置是否已经过优化。
此外,可以使用以下几个属性优化管道输入文件配置,以忽略/关闭旧日志文件,如here所述,这将防止不必要的管道线程创建。
在我的情况下,我只需要观看最近的文件并忽略旧文件,我已按如下方式设置配置:
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
}
}