Apache Ignite: недостаточно памяти в области данных [name = Default_Region, initSize = 256,0 MiB, maxSize = 68,0 GiB, persistenceEnabled = false]

У нас не хватает памяти в области данных в нашей производственной среде Apache Ignite, и процесс Ignite был остановлен. Мы настроили память размером 68 ГБ вне кучи. И никакие политики выселения не включены, поскольку мы не хотим терять данные из Ignite. Также мы не включили постоянство, так как хотим хранить все данные только в Ignite.

class org.apache.ignite.internal.mem.IgniteOutOfMemoryException: Out of memory in data region [name=Default_Region, initSize=256.0 MiB, maxSize=68.0 GiB, persistenceEnabled=false] Try the following:
  ^-- Increase maximum off-heap memory size (DataRegionConfiguration.maxSize)
  ^-- Enable Ignite persistence (DataRegionConfiguration.persistenceEnabled)
  ^-- Enable eviction or expiration policies
    at org.apache.ignite.internal.pagemem.impl.PageMemoryNoStoreImpl.allocatePage(PageMemoryNoStoreImpl.java:304)
    at org.apache.ignite.internal.processors.cache.persistence.freelist.AbstractFreeList.allocateDataPage(AbstractFreeList.java:463)
    at org.apache.ignite.internal.processors.cache.persistence.freelist.AbstractFreeList.insertDataRow(AbstractFreeList.java:501)
    at org.apache.ignite.internal.processors.cache.persistence.RowStore.addRow(RowStore.java:97)

Причина этой ошибки в том, что занимает всю область данных (68 ГБ)? Если да, можем ли мы справиться с этим, остановив службу Ignite?


person Rajashekhar Meesala    schedule 04.11.2019    source источник


Ответы (1)


Я думаю, что ошибка в точности такая, как описано, и все три решения действительны.

  1. Дайте Ignite больше памяти
  2. Определите политику выселения, чтобы записи удалялись, и вам не хватало памяти
  3. Используйте постоянство Ignite, которое сохраняет любые данные, которые не помещаются в памяти на диске.

Если вы не можете выделить больше памяти и хотите сохранить все в Ignite, это похоже на вариант 3.

Также мы не включили постоянство, так как хотим хранить все данные только в Ignite.

Чтобы было ясно: у Ignite есть два вида стойкости. Сторонняя персистентность, при которой Ignite сохраняет копию своих данных в устаревшую базу данных. И собственное постоянство, которым Ignite управляет самостоятельно. Вышеупомянутое предложение в основном касается последнего.

person Stephen Darlington    schedule 04.11.2019
comment
Да, собственная настойчивость Ignite достаточно хороша. В любом случае, мы хотели бы разместить наши данные в памяти только для лучшей пропускной способности. Итак, есть ли возможность проверить доступность области данных перед загрузкой кеша в Ignite. Так что мы можем ограничить активность загрузки данных Ignite. Потому что мы можем быть в безопасности от исключения из памяти и в основном спасены от того, что Ignite не работает. - person Rajashekhar Meesala; 04.11.2019
comment
Отслеживайте использование памяти и масштабируйте кластер, прежде чем в ОЗУ больше не останется места: gridgain.com/docs/latest/administrators-guide/ - person dmagda; 04.11.2019