Logstash的CPU使用率波动和毛刺现象主要由其架构设计和实现语言导致。首先,Logstash的很多filter插件使用Ruby编写,作为脚本语言自身就局限了处理性能,Ruby的垃圾回收机制也会导致周期性的性能波动。其次,Logstash filter插件采用了每次只处理一条日志的设计,不能并行处理一组日志,无法充分利用日志数据的流式特征。在采集开始时CPU激增的原因可能有两点:一是采集延迟导致大量日志累积需要集中处理,二是启动采集所需要的初始化开销较大。虽然可以通过增加线程数来提升处理能力,但这又会导致更高的资源使用量。相比之下,iLogtail使用C++实现并利用SIMD并行计算,CPU使用率始终保持稳定。




