【问题标题】:Ways to increase Elasticsearch indexing speed?提高 Elasticsearch 索引速度的方法?
【发布时间】:2015-08-01 03:03:45
【问题描述】:

我正在设置一个单节点 ES 来处理来自网络的 udp 消息,并且我正在使用 logstash 来管道消息。

输入-> udp 没有过滤器 输出 -> Elasticsearch(单工作者,刷新大小为 5000)

对于我运行的所有测试,25k 是在严重丢包之前每秒的最大事件数。我知道瓶颈不是 udp 输入或网络,因为当我使用 stdout 或文件输出而不是 ES 时,吞吐量可以高达 80k/s。

节点是 16G/12T (RAID 0) 但磁盘是 HDD。 我尝试了不同的设置,但无法超过 25k evts/s。我想知道我是否只是遇到了硬件限制,唯一的方法是使用 SSD。 有人遇到过同样的情况吗?有什么技巧可以让 ES 以接近标准输出的速度进行索引?这是我迄今为止尝试过的(在 40 秒内发送 1M udp pkts,大约是 25K/s):

  1. 将 udp worker 增加到 8 个 --> 意识到输入不是问题
  2. 将 ES 输出 worker 增加到 2、4、8 --> 更糟 吞吐量,8 个 worker 损失 90%。认为 HDD 在并发 I/O 方面表现不佳。
  3. refresh_interval 从 1 秒增加到 30 秒 --> 轻微 改进
  4. 分片数 1、2、5、10 --> 无明显改善

这是我在 elasticsearch.yml 中添加的内容

script.disable_dynamic: true
http.cors.allow-origin: "/.*/"
http.cors.enabled: true
action.auto_create_index: false
bootstrap.mlockall: true
action.disable_delete_all_indices: true
cluster.routing.allocation.disk.threshold_enabled: true
cluster.routing.allocation.node_initial_primaries_recoveries:15
indices.recovery.concurrent_streams: 4
index.routing.allocation.disable_allocation: false
index.merge.scheduler.max_thread_count: 1
index.store.type: mmapfs
index.refresh_interval: 60000
threadpool.bulk.queue_size: 30000
indices.memory.index_buffer_size: 30%
index.translog.flush_threshold_ops: 50000

【问题讨论】:

  • 您使用的是什么版本的logstash?你在使用批量 api 吗?
  • @JoshC。 logstash 1.5.3,我的弹性搜索输出中有flush_size => 5000,我假设它告诉它使用批量?
  • 您为 Elasticsearch 分配了多少内存?你增加了ulimit设置吗?
  • @AlainCollins 我给了 ES 12G:ES_HEAP_SIZE=12g MAX_LOCKED_MEMORY=unlimited MAX_MAP_COUNT=262144 我应该尝试增加地图数量吗?
  • 这些设置看起来不错,但更多的内存总是好的。您是否为打开的文件提高了 ulimit?

标签: elasticsearch logstash


【解决方案1】:

根据我的经验,最好的方法是将磁盘切换到 SSD,它会真正提高您的性能。另一个可能是从单个 elasticsearch 服务器移动到集群中的多个服务器。

从您的问题中,我看到您已经尝试了一些不太明显的解决方案,例如增加工人数量和 indices.memory.index_buffer_size 参数,所以这些技巧似乎达到了硬件限制。

我建议使用“sar”或“iotop”工具来验证限制是否真的存在于磁盘中,如果您看到 100% 的磁盘利用率,那么除非您让 elasticsearch 写入,否则没有配置方法可以修复它更有效地将数据传输到磁盘。

【讨论】:

  • 根据 iotop,ES 的写入速度仅为 20-30M/s。我对磁盘 IO 进行了基准测试,它能够在 100% 的利用率下做到 1.2G/s,然后我做了一个数据库 io 基准测试,它更加随机 RW,峰值只有 25M/s 左右。看起来像SSD +允许缓存的perc是要走的路。谢谢!
猜你喜欢
  • 2016-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-20
  • 2014-05-21
  • 2021-08-11
  • 1970-01-01
相关资源
最近更新 更多