按照文档中的描述,es的snapshot/restore操作是在snapshot线程池控制的。这个线程池控制并发snapshot或者restore的线程的数量。一个shard需要绑定一个thread来进行操作。此线程池大小受3个因素影响:
1,机器可用processor数量,也既cpu核数。这个默认是读取机器配置。但是可以通过参数进行配置。
2,thread_pool.snapshot.max
3,thread_pool.snapshot.core: 20
有一点特别重要,需要注意,restore的并发分片数除了受到snapshot线程池控制之外,因为restore是与索引recover的机制相同,因此还收到节点可并发恢复的主分片数量的限制。cluster.routing.allocation.node_initial_primaries_recoveries。这个参数默认为4,限制了单节点同时recover/restore的主分片数为4。如果需要通过提高并行度从而加快restore过程,可增大此设置。