Logstash CPU使用率波动和毛刺的原因主要有以下几点:
启动延迟与日志累积:Logstash在开始采集时有约10秒的启动延迟(相比iLogtail几乎立即开始),这段时间内日志持续积累。当Logstash开始处理时,会突然面对大量积压日志,导致CPU使用率激增。
JVM垃圾回收:Logstash基于JVM运行,Ruby代码在JRuby上执行,GC暂停会造成处理的间歇性中断,表现为CPU使用率的波动。
单条处理模式:Logstash filter插件设计为每次只处理一条日志,无法批量并行处理。在高吞吐场景下,这种逐条处理模式导致CPU利用效率不均匀。
Ruby语言特性:Ruby的全局解释器锁(GIL)限制了真正的并行执行,即使有多个线程也无法充分利用多核CPU。
相比之下,iLogtail SPL使用C++原生实现,无GC开销,支持SIMD并行处理多条日志,因此CPU使用率保持稳定。




