2017-02-22 292 views
1

pipeline.workers看logstash選擇其中指出logstash輸入階段多線程?

-w,--pipeline.workers COUNT

設置管道工人數量運行。該選項設置並行,執行過濾器輸出階段的管道。如果發現事件正在備份,或者CPU未飽和,請考慮增加此數量以更好地利用機器處理能力。默認值是主機CPU內核的數量。

我在想,如果logstash輸入級還採用了我的機器上的所有內核:

input { 
    kafka { 
    bootstrap_servers=>"kfk1:9092,kfk2:9092" 
    topics => ["mytopic"] 
    group_id => "mygroup" 
    key_deserializer_class => "org.apache.kafka.common.serialization.ByteArrayDeserializer" 
    value_deserializer_class => "org.apache.kafka.common.serialization.ByteArrayDeserializer" 
    codec => avro { 
     schema_uri => "/apps/schema/rocana3.schema" 
    } 
    } 
} 

這是否輸入>卡夫卡>編解碼器> Avro公司還利用我的機器的所有核心或該單螺紋舞臺?

回答

1

Logstash輸入流水線有一些怪癖。它可以是多線程的,但需要一些配置。有兩種方法可以做到這一點:

  • 輸入插件有一個workers參數,並不是很多。
  • 每個input {}塊都將在其自己的線程上運行。

所以,如果你正在運行的file {}輸入插件,它缺少一名工人配置選項,在每次定義文件將被一個提供服務,只有一個線程。

編解碼器在調用它們的插件的上下文中運行,通常每個調用都是單線程的。

我運行的大多數Logstash部署使用了多個內核,它位於管道的filter {}階段,而不是輸入。這就是爲什麼Logstash提供了一種配置管道工人數量的方法。對於一個輸入或一組輸入,每秒鐘拉動數千個事件,您可以僅在filter {}output {}管道上加載一個框。