
# 集群升级/规格变更时节点过载
#### 问题描述
在进行集群版本升级或规格变更操作（例如，滚动升级、调整实例规格）的过程中，如果并发恢复参数设置不当，可能导致集群内部分或全部节点负载急剧升高。典型现象：
- 节点负载异常：在集群版本升级或规格变更过程中，节点CPU、JVM内存使用率急剧升高。
- 节点脱离：部分节点因资源耗尽导致脱离集群，集群状态变为red。
- 任务中断：升级/规格变更任务执行时间显著增加，部分任务超时失败。
- 资源瓶颈：监控显示CPU使用率超过90%，JVM内存持续增长。
 
#### 问题原因
- 参数设置不合理：参数indices.recovery.max_bytes_per_sec设置过高，导致数据迁移速度过快，引发CPU和内存资源竞争，造成节点过载。
- 任务堆积：版本升级或规格变更时，系统自动触发的分片迁移和副本分配任务会因并发参数不当而堆积，进一步加剧资源消耗。
- 资源不足：节点规格不足、磁盘IO或网络带宽受限时，无法支撑高并发参数下的操作，导致任务执行效率显著下降。
 
#### 解决方法
1. 调整并发参数以减少节点间的通信负载，提高集群稳定性。 降低数据迁移速度以减少节点负载，确保集群稳定运行。降低迁移速度会延长任务执行时间。
   ```
   PUT _cluster/settings
   {
     "transient": {
       "indices.recovery.max_bytes_per_sec": "40mb",
       "cluster.routing.allocation.node_concurrent_outgoing_recoveries": 2,
       "cluster.routing.allocation.cluster_concurrent_rebalance": 2,
       "cluster.routing.allocation.node_initial_primaries_recoveries": 2
     }
   }
   ```
   等待5\~10分钟，查看监控指标（如CPU、JVM内存使用率）确认负载是否下降。
   - 是，检查集群状态是否恢复正常，确保所有节点均处于健康状态，故障修复成功。
   
   - 否，可以进一步降低indices.recovery.max_bytes_per_sec，如果调整后负载仍然过高，或任务已超时失败，则继续执行下一步。
    
2. 终止任务。如果是升级任务，可以在控制台的升级版本页面终止升级任务，但是需确认所有节点均未成功升级，方可终止升级任务。如果无法终止任务可以联系技术支持。
3. 扩容集群节点数量或升级集群节点规格，确保新资源能够满足业务要求。 扩容完成后，建议等待10\~15分钟，确认新节点已接入业务。
   
4. 扩容成功后，重新执行升级/规格变更任务，确认任务是否成功。
   - 是，则故障恢复。
   
   - 否，则联系技术支持处理。
    
 
