結論
お前のせい
環境
- Elasticsearch 5.x
概要
複数ノードでクラスターを組んでいるElasticsearchで、1台が壊れたり、メンテナンスで再起動したときにシャードリカバリが発生するが、いかんせん遅い。
が、遅いのはスペックのせいとかESのせいではなく設定のせいかも
設定
並列でシャードリカバリを実行できるが、デフォルトでは2並列でしかやってくれない
余裕がある場合は増やしてみる。
curl -XPUT 'localhost:9200/_cluster/settings' -d '{"transient" : {"cluster.routing.allocation.node_concurrent_recoveries" : "4"}}'
また、リカバリによってパフォーマンスが落ちないように、1ノードあたりの最大通信速度の設定もある。デフォルトだと40MBだが、これも余裕がある場合は増やせる。
curl -XPUT 'localhost:9200/_cluster/settings' -d '{"transient" : {"indices.recovery.max_bytes_per_sec" : "60mb"}}'
用が済んだら元に戻しておこう