Окружающая среда:
- Apache Ignite 2.4 работает на Amazon Linux. ВМ 16CPUs / 122 ГБ оперативной памяти. Там много места.
- 5 узлов, 12 ГБ каждый
cacheMode = PARTITIONED
backups = 0
OnheapCacheEnabled = true
atomicityMode = ATOMIC
rebalacneMode = SYNC
rebalanceBatchSize = 1MB
copyOnread = false
rebalanceThrottle = 0
rebalanceThreadPoolSize = 4
По сути, у нас есть процесс, который заполняет кеш при запуске, а затем периодически получает обновления от Kafka, распространяя их в кеш.
Количество элементов в кеше более или менее стабильно с течением времени (есть небольшое колебание, поскольку у нас есть смесь событий создания, обновления и удаления), но мы заметили, что распределение данных по разные узлы очень неровные, причем один из узлов имеет по крайней мере удвоенное количество ключей (и использование памяти) по сравнению с другими. Со временем этому узлу либо не хватает памяти, либо он начинает выполнять очень длинные GC и теряет связь с остальной частью кластера.
Я ожидал, что Ignite уравновесит данные между различными узлами, но реальность показывает что-то совершенно другое. Я что-то здесь упускаю? Почему мы видим этот дисбаланс и как мы можем это исправить?
Заранее спасибо.