环境:
- 在 Amazon Linux 上运行的 Apache Ignite 2.4。虚拟机是 16CPU/122GB 内存。那里有足够的空间。
- 5 个节点,每个 12GB
cacheMode = PARTITIONED
backups = 0
OnheapCacheEnabled = true
atomicityMode = ATOMIC
rebalacneMode = SYNC
rebalanceBatchSize = 1MB
copyOnread = false
rebalanceThrottle = 0
rebalanceThreadPoolSize = 4
基本上,我们有一个进程在启动时填充缓存,然后从 Kafka 接收定期更新,将它们传播到缓存。
缓存中的元素数量随着时间的推移或多或少是稳定的(只是有一点波动,因为我们混合了创建、更新和删除事件),但我们注意到数据在不同节点之间的分布非常不均匀,其中一个节点的键数(和内存利用率)至少是其他节点的两倍。随着时间的推移,该节点要么内存不足,要么开始执行很长时间的 GC,并与集群的其余部分失去联系。
我的期望是 Ignite 会平衡不同节点之间的数据,但现实表明情况完全不同。我在这里错过了什么吗?为什么我们会看到这种不平衡,我们如何解决它?
提前致谢。