这个问题一年前遇到,写出来mark一下
问题描述:logstash 经常在运行一小段时间内挂起,不再消费任何input数据,也不再输出任何数据。
logstash 版本:1.5.0
由于年代久远,系统的cpu状况和 io状况无法分享截图,当时查看状态为 cpu:0, io:0
下面通过ruby源码 分析这次死锁是如何发生的。
出问题的地方就在
logstash-1.5.0.rc2/lib/logstash/pipeline.rb的如下两段代码:
start_filters 将启动一个filterworker 线程(根据配置可以设置多个,这里主要讨论只有一个filterworker的情况,因为这种情况极易发生死锁),以及每隔5s 进行一次push FlushEvent 的线程
150 def start_filters
151 @filters.each(&:register)
152 @filter_threads = @settings["filter