Logstash异步追加器导致Java applicaton由于OOM而停止

时间:2018-12-20 20:41:26

标签: logging logstash asyncappender

我们在应用程序中使用下一个配置 春季启动+ Logstash LogstashTcpSocketAppender(在此处https://github.com/logstash/logstash-logback-encoder/blob/master/README.md#tcp-appenders中进行介绍)

简而言之,它是基于Lmax架构的异步附加程序,默认缓冲区大小为8000个日志条目, 如果出现logstash错误,则所有文件都将存储在该缓冲区中。假设您有1Mb的长消息,那么它将需要8GB的堆,这是胡说八道。 我目前有很多选择: 1)使用同步套接字附加器,但是日志记录会减慢applicaton,并且在发生错误时applicaton将停止响应 2)限制缓冲区大小,但随后消息可能会丢失 这似乎是很常见的情况,那么处理这种情况的策略是什么?也许像转储到某个文件然后重新处理?

1 个答案:

答案 0 :(得分:0)

我们决定将Cloudwatch驱动程序用于Docker映像,以将日志存储在AWS Cloudwatch中。

然后使用logstash-cloudwatch插件读取此日志并将其发送到ES。这样,对应用程序没有任何影响,因为它不通过TCP发送日志,也不需要额外的缓冲区来发送