Akka集群滚动重启时Remembered entities无法正常重建问题排查
Akka集群滚动重启时Remembered Entities重建异常问题
问题描述
在3节点Actor集群中执行3节点滚动重启时,Remembered entities无法正常重建:Shards已完成完全重平衡,但部分实体未被重建。
集群配置
akka.cluster.sharding.remember-entities = on akka.cluster.sharding.remember-entities-store = ddata akka.cluster.sharding.distributed-data.durable.keys = [] akka.remote.artery{ enabled = on transport = tcp }
集群状态变迁过程
初始状态:3个节点各有100个Shards,对应1000个Actor,总计300个Shards、3000个Actor:
- Node 1 -- 100 Shards \ 1000 Actors
- Node 2 -- 100 Shards \ 1000 Actors
- Node 3 -- 100 Shards \ 1000 Actors
- Node 1下线后,Shards重平衡至Node 2和Node 3,所有remembered entities均正常重建:
- Node 1 -- Down
- Node 2 -- 150 Shards \ 1500 Actors
- Node 3 -- 150 Shards \ 1500 Actors
- Node 1上线后不久,Node 2下线,Shards和remembered entities正常重建至Node 1和Node 3:
- Node 1 -- 150 Shards \ 1500 Actors
- Node 2 -- Down
- Node 3 -- 150 Shards \ 1500 Actors
- Node 2上线后不久,Node 3下线,Shards重平衡至Node 1和Node 2,但部分来自Node 3的remembered entities未在Node 2上重建:
- Node 1 -- 150 Shards \ 1500 Actors
- Node 2 -- 150 Shards \ 1423 Actors
- Node 3 -- Down
核心问题
Node 2加入集群后立即重启Node 3时,remembered entities的重建存在不一致性,期间集群仍有消息发送至Actor。
疑问:Node 2刚加入就重启Node 3时,瓶颈可能是什么?
已尝试操作
- 不重启Node 3时,实体无异常
- 单独延迟重启Node 3时,无异常
- 调整Shard数量,问题仍存在
- 将
akka.cluster.distributed-data.majority-min-cap从默认5改为3,问题仍存在
待解决问题
- 是否需要调优相关配置?
- 需从哪些方向进一步调试以定位根因?
内容的提问来源于stack exchange,提问作者Arun
相关产品推荐
相关产品推荐

