弹性搜索和Logstash性能调整

时间:2015-02-18 08:56:56

标签: elasticsearch logstash logstash-grok

在单节点弹性搜索和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

我想知道

  1. 表现的基准是什么?
  2. 表现是否符合基准或低于基准
  3. 为什么即使我增加了弹性搜索JVM,我也无法找到差异?
  4. 如何监控Logstash并提高其性能?
  5. 感谢任何有关这方面的帮助,因为我刚开始使用logstash和弹性搜索。

2 个答案:

答案 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.

的更多详细信息