我有一个弹性搜索设置,到现在为止一台机器(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 似乎不再存在。
按照目前的速度,转移所有数据需要数周时间。
答案 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
}
}'