提高elasticsearch副本创建性能

时间:2016-12-20 16:53:29

标签: performance elasticsearch

我有一个弹性搜索设置,到现在为止一台机器(16核64GB RAM 4x800GB SSD,在450个索引中包含1.5TB的日志数据,运行ES 5.1。

现在我向群集添加了第二个相同的服务器。两者都通过10GBit网络连接。

所有索引都有1个分片,我已将它们配置为在第二个服务器上线后拥有1个副本。

现在,副本正在创建,但只是缓慢。两台机器上的负载低于1,IO速率约为2MB / s或更低。

我正在运行以下设置:

{
  "persistent": {
    "cluster": {
      "routing": {
        "allocation": {
          "node_concurrent_incoming_recoveries": "20",
          "node_initial_primaries_recoveries": "8",
          "node_concurrent_outgoing_recoveries": "20"
        }
      }
    },
    "indices": {
      "recovery": {
        "max_bytes_per_sec": "400mb"
      },
      "store": {
        "throttle": {
          "type": "none"
        }
      }
    }
  },
  "transient": {
    "logger": {
      "org": {
        "elasticsearch": {
          "indices": "DEBUG"
        }
      }
    }
  }
}
在ES 5中,

indices.store.throttle.type 似乎不再存在。

按照目前的速度,转移所有数据需要数周时间。

2 个答案:

答案 0 :(得分:1)

我刚刚发现了这个问题 - 节点宣布了错误网卡的IP,并且所有数据都是通过慢速链路路由的。

我应该早点想到iftop。

更改公布的IP后,复制使用> 800MB /秒。

答案 1 :(得分:0)

当我需要在服务器重启后加速重新分配分片时,我暂时将设置设置为以下内容,并且分配速度更快,这可能会有所帮助。

    curl -XPUT 'eshostname:9200/_cluster/settings' -d '{
                "transient": {
                        "cluster.routing.allocation.allow_rebalance" : "indices_all_active",
                        "cluster.routing.allocation.node_concurrent_recoveries": 160,
                        "cluster.routing.allocation.node_initial_primaries_recoveries" : 100,
                        "cluster.routing.allocation.enable": "all",
                        "indices.recovery.max_bytes_per_sec": "400mb",
                        "indices.recovery.concurrent_streams" : 30,
                        "indices.recovery.concurrent_small_file_streams" : 30
                }
        }'