2

在单节点弹性搜索和 logstash 中,我们在不同类型的 AWS 实例(即 Medium、Large 和 Xlarge)上测试了 20mb 和 200mb 文件解析到 Elastic Search。

环境详细信息:中型实例 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 High-Memory Extra Large 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. 为什么即使在我增加了 elasticsearch JVM 之后我也无法找到差异?
  4. 我如何监控 Logstash 并提高其性能?

感谢您对这方面的任何帮助,因为我是 logstash 和弹性搜索的新手。

4

2 回答 2

1

我认为这种情况与 Logstash 使用固定大小的队列(Logstash 事件处理管道)有关

Logstash 将每个队列的大小设置为 20。这意味着下一阶段最多可以有 20 个事件待处理。较小的队列大小意味着当出现重负载或临时管道问题时,Logstash 可以安全地阻塞和停止。替代方案是要么有一个无限的队列,要么在出现问题时丢弃消息。无限队列可以无限增长并最终超出内存,从而导致丢失所有排队消息的崩溃。

我认为您应该尝试使用“-w”标志增加工人数量。

另一方面,很多人说 Logstash 应该水平扩展,而不是增加更多的内核和 GB 的内存(如何提高 Logstash 性能

于 2015-03-05T09:42:05.337 回答
0

您已经根据总内存正确地给出了 Java 堆大小,但我认为您没有正确利用它。我希望你知道什么是 fielddata 大小,默认是堆大小的 60%,而你正在将它减少到 30%。

我不知道你为什么要这样做,我的看法可能对你的用例是错误的,但它是分配indices.fielddata.cache.size: "70%"甚至 75% 的好习惯,但是使用这个设置,你必须设置类似的东西indices.breaker.total.limit: "80%"以避免内存不足(OOM ) 例外。您可以查看此处以获取有关限制内存使用的更多详细信息。

于 2016-01-14T09:05:38.083 回答