我想使用点燃持久性,但有一些我没有得到。我目前的理解是,在磁盘上的数据比RAM中的数据大之前,Ignite总是会消耗所有的机器内存。让我解释一下:
对于一台有128GB内存的机器,如果我将内存区域设置为100GB,那么Ignite也将消耗100GB的RAM。
<bean class="org.apache.ignite.configuration.DataRegionConfiguration">
<property name="name" value="Default_Region"/>
<property name="initialSize" value="#{100 * 1024 * 1024 * 1024}"/>
</bean>
问题是,我想说我为Ignite保留了128 gb中的100GB,然后其余的溢出到磁盘上。但是如果需要的话,我想确保我有足够的可用内存来启动一些特别的进程。
如果在同一台128GB的机器上,我定义了一个300GB的区域,那么在磁盘大小大于内存大小之前,ignite将消耗所有可用的内存(我认为是机器的80%),但这意味着我不能为其他进程保留超过20%的可用内存。
<bean class="org.apache.ignite.configuration.DataRegionConfiguration">
<property name="name" value="Default_Region"/>
<property name="initialSize" value="#{300 * 1024 * 1024 * 1024}"/>
</bean>
几个问题:
- 我的理解正确吗?
- 有办法解决这个问题吗?
Thanks a lot
启用本地持久性的Ignite是一个数据库。所有数据都在磁盘上。部分数据也在内存中(希望是100%,但不总是)。
80%的东西是默认的,如果你不指定一个数据区域你会得到什么。如果你指定一个大小,那就是你得到的。因此,将数据区域大小设置为100Gb允许Ignite使用100Gb的内存,并且您存储的任何数据都只在磁盘上。不要将数据区域的大小设置为大于可用的内存量,否则内存中的数据库会突然被磁盘绑定。
<bean class="org.apache.ignite.configuration.DataRegionConfiguration">
<property name="name" value="Default_Region"/>
<property name="initialSize" value="#{100 * 1024 * 1024 * 1024}"/>
<property name="maxSize" value="#{100 * 1024 * 1024 * 1024}"/>
</bean>
用于堆外存储。您还需要考虑Java堆空间。