弹性搜索索引速度随时间的变化

时间:2017-08-01 10:38:29

标签: elasticsearch

我正在为我的项目进行弹性搜索中的一些性能调整,我需要一些帮助来提高弹性搜索索引速度。我使用ES 5.1.1并且我有2个节点设置,其中8个分片用于索引。我有2个节点的服务器,16GB RAM和12CPU为每台服务器分配2.2GHz时钟速度。我需要在1.5小时内索引大约25,000,000份文档,我目前在大约4小时内完成。我已完成以下配置更改以改善索引时间。

  • 将'indices.store.throttle.type'设置为'none'
  • 将'refresh_interval'设置为'-1'
  • 将'translog.flush_threshold_size'增加到1GB
  • 将'number_of_replicas'设为'0'
  • 为索引使用8个分片
  • 设置VM选项-Xms8g -Xmx8g(RAM大小的一半)

我正在使用批量处理器在我的java应用程序中生成文档,并且我使用以下配置来设置批量处理器。

批量操作计数:10000
批量大小(MB):100
并发请求:100
冲洗间隔:30

最初我可以在第一分钟索引356167左右。但随着时间的推移,它会减少,大约1小时后,每分钟大约121280个文档。

如何在整个时间内保持索引率稳定?还有其他方法可以改善表现吗?

1 个答案:

答案 0 :(得分:0)

我强烈建议不要更改配置参数,例如translog刷新大小,限制,除非你知道你在做什么(这并不意味着在互联网上阅读一些博客文章: - )

每个服务器尝试一个分片,特别是将批量大小减小到10MB。 100MB * 100并发请求意味着您需要10GB的堆来处理这些(没有做任何其他事情)。我想并非所有文档都被索引,因为你的线程池中被拒绝的任务。

从小处开始,变大,而不是开始大,但对索引没有任何见解。