针对20分区的Kafka Topic,如何配置Logstash的pipeline.workers参数?
Logstash pipeline.workers 参数设置建议
你的理解存在偏差,consumer_threads 和 pipeline.workers 负责不同环节的工作,不能用「相乘等于分区数」的逻辑来设置。
consumer_threads是Logstash Kafka输入插件的消息拉取线程数:当前设为2,意味着会启动2个Kafka消费者线程,Kafka会自动将20个分区分配给这2个线程(通常每个线程分到10个分区),这已经实现了分区的并行拉取。pipeline.workers是Logstash处理管道的消息处理线程数,负责对拉取到的消息进行过滤、格式转换、输出转发等操作。
给你几个实用的设置参考:
- 底线要求:
pipeline.workers的数量至少要大于等于consumer_threads的数量,避免拉取到的消息在输入队列积压。 - 最优参考:通常建议设置为Logstash所在服务器的CPU核心数(比如服务器是8核,就设为8);如果消息处理逻辑复杂(比如多规则过滤、复杂字段转换),可以适当增加数值;如果处理逻辑简单,和
consumer_threads保持一致(比如设为2)也完全可行。
不用刻意追求consumer_threads × pipeline.workers等于分区数,拉取消息和处理消息是两个独立阶段,只要保证处理线程的速度能跟上拉取线程的节奏,就不会出现性能瓶颈。
你的Kafka输入配置代码:
input { kafka { codec => json bootstrap_servers => "${BOOTSTRAP_SERVERS}:9092" topics => ["service-log"] group_id => "service-logstash" consumer_threads => 2 } }
内容的提问来源于stack exchange,提问作者yuyang
相关产品推荐
相关产品推荐

