与logstash一起使用时阻止log4j

时间:2016-11-19 10:49:55

标签: java elasticsearch log4j

我的java程序有这样的技术堆栈:
Tomcat的log4j的+ + + logstash
ElasticSearch log4j使用SocketAppender将日志发送到logstash,然后将写入输出写入elasticsearch 问题是运行几个小时后,java应用程序将被阻止。编写log4j时,有几个线程被阻止。当我关闭logstash和elasticsearch时,应用程序将恢复 我认为它应该与弹性搜索性能相关,但我不知道如何解决它。

1 个答案:

答案 0 :(得分:0)

可能与log4j SocketAppender有关,请参阅herehere

如果你使用log4j2,它有一个可能有用的Async Appender

也许你可以反过来看看是否是logstash + ES或tomcat + yourapp(即log4j)一方被锁定:只关闭你的应用程序并查看logstash进程是否在你重新启动时处理输入tomcat的。如果您的日志进入elasticsearch,那么问题就有可能出现在tomcat端 - 尽管不能保证,关闭套接字可能会解决问题,这是一个很好的猜测。

其他建议:

  • 在tomcat服务器或Thread Dump Analyzer上使用jvisualvm(参见上面的SO链接)
  • 在命令行上启动logstash并添加stdout或debug ouput,看看是否有有用的消息。

HTH,

阿兰