在单节点弹性搜索和logstash中,我们测试了20mb和200mb文件解析到不同类型的AWS实例上的弹性搜索,即中,大和Xlarge。
环境详细信息:中型实例3.75 RAM 1内核存储:4 GB SSD 64位网络性能:中等 运行实例:Logstash,弹性搜索
场景:1
**With default settings**
Result :
20mb logfile 23 mins Events Per/second 175
200mb logfile 3 hrs 3 mins Events Per/second 175
Added the following to settings:
Java heap size : 2GB
bootstrap.mlockall: true
indices.fielddata.cache.size: "30%"
indices.cache.filter.size: "30%"
index.translog.flush_threshold_ops: 50000
indices.memory.index_buffer_size: 50%
# Search thread pool
threadpool.search.type: fixed
threadpool.search.size: 20
threadpool.search.queue_size: 100
**With added settings**
Result:
20mb logfile 22 mins Events Per/second 180
200mb logfile 3 hrs 07 mins Events Per/second 180
情景2
环境详细信息:R3大型15.25 RAM 2核存储:32 GB SSD 64位网络性能:中等 运行实例:Logstash,弹性搜索
**With default settings**
Result :
20mb logfile 7 mins Events Per/second 750
200mb logfile 65 mins Events Per/second 800
Added the following to settings:
Java heap size: 7gb
other parameters same as above
**With added settings**
Result:
20mb logfile 7 mins Events Per/second 800
200mb logfile 55 mins Events Per/second 800
情景3
环境详情: R3高内存超大r3.xlarge 30.5 RAM 4核存储:32 GB SSD 64位网络性能:中等 运行实例:Logstash,弹性搜索
**With default settings**
Result:
20mb logfile 7 mins Events Per/second 1200
200mb logfile 34 mins Events Per/second 1200
Added the following to settings:
Java heap size: 15gb
other parameters same as above
**With added settings**
Result:
20mb logfile 7 mins Events Per/second 1200
200mb logfile 34 mins Events Per/second 1200
我想知道
感谢任何有关这方面的帮助,因为我刚开始使用logstash和弹性搜索。
答案 0 :(得分:1)
我认为这种情况与Logstash使用固定大小队列(The Logstash event processing pipeline)
的事实有关Logstash将每个队列的大小设置为20.这意味着下一个阶段最多可以处理20个事件。小队列大小意味着当负载很重或管道出现临时问题时,Logstash会简单地阻塞和停止。替代方案是在出现问题时拥有无限队列或丢弃消息。无限制队列可以无限制地增长并最终超过内存,导致崩溃,丢失所有排队的消息。
我认为你应该尝试的是用' -w'来增加工人的数量。标志。
另一方面,许多人说Logstash应该水平扩展,而不是添加更多内核和GB ram(How to improve Logstash performance)
答案 1 :(得分:0)
您已经根据总内存正确地给出了Java堆大小,但我认为您没有正确使用它。我希望你知道什么是fielddata大小,默认是堆大小的60%,你将它减少到30%。
我不知道你为什么要这样做,我的看法可能对你的用例有误,但是它的好习惯是分配indices.fielddata.cache.size: "70%"
甚至75%,但是这个设置你必须要设置类似indices.breaker.total.limit: "80%"
的内容以避免内存不足(OOM)异常。您可以查看此内容以获取有关Limiting Memory Usage.