【问题标题】:Elasticsearch bad indexing timeElasticsearch 错误的索引时间
【发布时间】:2014-11-22 06:05:52
【问题描述】:

我正在尝试在 couchbase 到 elasticsearch 之间迁移(复制)3500 万份文档(这是一个标准数量,不是太大)。

我的 elasticsearch(1.3 版)集群由 Microsoft Azure 上的 3 个 A3(4 核,7 GB 内存)CentOS 服务器组成(每台服务器相当于亚马逊上的大型服务器)..

我使用“计时数据流”索引来存储文档。每个索引代表一个月,由 3 个分片和 2 个副本组成。

当我启动迁移脚本时,我看到插入时间变得非常慢(大约每秒 10 个文档),并且集群中每台服务器的平均负载超过 1.5。 此外,JVM 内存几乎增加到 100%,而 cpu 显示为 20%,IOps 显示最大为 20。 (我使用 Marvel CNC 来获取所有这些数据)

  1. 是否有人在 elasticsearch 中遇到过此类索引问题?
  2. 我想知道是否有任何我应该注意的参数来扩展 java 内存?
  3. 我的集群规范是否足以处理每秒 100 个索引。
  4. 索引时间取决于索引有多大?它应该那么慢吗?

谢谢尼夫

【问题讨论】:

  • 你能从你的奇迹索引率和 JVM 内存信息中添加截图吗?
  • 顺便说一句,您的问题标题具有误导性。你能编辑一下吗=

标签: azure elasticsearch centos data-migration elasticsearch-marvel


【解决方案1】:

我引用了我在 google 组 (link) 中得到的答案

几个建议:

  1. 在大量插入之前禁用副本(将副本计数设置为 0),然后再启用它。

  2. 使用batching,实际批量大小取决于许多因素(文档大小、网络、实例强度)

  3. 遵循 ES 关于节点设置的建议,例如将可用内存大小的 50% 分配给 ES 的 Java 堆,不要运行其他任何东西 在那台机器上,并禁用swappiness。

  4. 您的索引已经分片,请尝试将其分散到 3 个不同的服务器上,而不是将它们放在一个服务器上(“虚拟分片”)。这个 将有助于分散索引负载。

  5. 如果您不自己指定文档 ID,请确保使用最新的 ES,ID 有显着改进 生成机制,可以帮助加快速度。

我应用了第 1 点和第 3 点,似乎问题解决了 :) 现在我以每秒 80 个文档的速度编制索引,并且平均负载很低(最大为 0.7)

我必须感谢发布此回复的 Itamar Syn-Hershko

【讨论】:

    猜你喜欢
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    • 2017-10-10
    相关资源
    最近更新 更多