测试环境如下:
CPU: Intel L5640 2.26 GHz 6 cores * 2 EA
Memory: SAMSUNG PC3-10600R 4 GB * 4 EA
HDD: TOSHIBA SAS 10,000 RPM 300 GB * 6 EA
OS: CentOS release 6.6 (Final)
Logstash 2.3.4
我使用了以下配置:
input {
kafka {
zk_connect => '1.2.3.4:2181'
topic_id => 'some-log'
consumer_threads => 1
}
}
filter {
metrics {
meter => "events"
add_tag => "metric"
}
}
output {
if "metric" in [tags] {
stdout {
codec => line {
format => "Count: %{[events][count]}"
}
}
}
}
我得到了以下结果:
./bin/logstash -f some-log-kafka.conf
Settings: Default pipeline workers: 24
Pipeline main started
Count: 9614
Count: 23080
Count: 37087
Count: 50815
Count: 64517
Count: 78296
Count: 91977
Count: 105990
默认flush_interval
为5秒,因此每5秒看起来大约为14K(每秒2.8K)。
将consumer_threads
设置为10,我得到以下结果:
./bin/logstash -f impression-log-kafka.conf
Settings: Default pipeline workers: 24
Pipeline main started
Count: 9599
Count: 23254
Count: 37253
Count: 51029
Count: 64881
Count: 78868
Count: 92663
Count: 106267
看起来增加consumer_threads
没有太大区别。
基于我简单的无操作消费者基准,我预计大约30K和至少10K,但它只是预期性能的1/10。
如何提升其表现?
补充评论: 使用Kafka客户端Java库,我正在使用引导服务器,而使用Logstash Kafka输入插件,我使用的是ZooKeeper(引导服务器没有选项)。我不确定这会导致巨大的差异。