Apache Ignite:数据区域内存不足 [name=Default_Region、initSize=256.0 MiB、maxSize=68.0 GiB、persistenceEnabled=false]

Raj*_*ala 1 in-memory bigdata in-memory-database ignite

我们的 Apache Ignite 生产环境中的数据区域内存不足,并且 Ignite 进程被终止。我们配置了 68 GB 的堆外内存。并且没有启用驱逐策略,因为我们不想丢失 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)
Run Code Online (Sandbox Code Playgroud)

此错误的原因是占用整个数据区域(68 GB)?如果是的话,我们可以通过停止 Ignite 服务来处理这个问题吗?

Ste*_*ton 5

我认为错误与描述的完全一样,并且三个解决方案都是有效的。

  1. 给予 点燃更多记忆
  2. 定义逐出策略,以便删除记录并且不会耗尽内存
  3. 使用 Ignite 持久性,它将无法放入内存的任何数据存储在磁盘上

如果您无法分配更多内存并希望将所有内容保留在 Ignite 中,则类似于选项 3。

此外,我们没有启用持久性,因为我们只想将整个数据存储在 Ignite 中。

需要明确的是:Ignite 有两种持久性。第三方持久性,Ignite 将其数据副本保存到旧数据库中。以及本机持久性,由 Ignite 自行管理。上面的建议主要是针对后者