Darrel, Thanks for the explanation and workaround. This helps in
understanding the issue.

Nilkanth.

On Tue, Jul 19, 2016 at 2:59 AM, Darrel Schneider <dschnei...@pivotal.io>
wrote:

> This is a known issue in GemFire. I filed a corresponding Geode
> ticket: GEODE-1672.
>
> The issue involves recovering large amounts of when using the heap LRU. The
> data get recovered asynchronously before it can be evicted by the heap LRU.
> So it is possible you will run out of heap during recovery. Eviction only
> moves an entry value to disk. The entry key and entry meta-data remain in
> memory. Geode will stop recovering values once the resource manager hits
> the eviction limit but, since it is not able to evict values already
> recovered, it can run out of memory recovering the keys and meta-data for
> subsequent entries.
>
> In your case the only known workaround is to set this system property:
> -Dgemfire.disk.recoverValues=false
> This will cause values to not be asynchronously recovered from disk. So any
> time you ask for a recovered value by doing a Region get it will need to be
> faulted in at that time. For some uses cases this might be optimal since if
> prevents recovery from faulting in values that may never be read.
>
>
> On Fri, Jul 15, 2016 at 2:01 PM, Nilkanth Patel <nilkanth.hpa...@gmail.com
> >
> wrote:
>
> > Hello,
> >
> > Facing issue in recovering data for persisted regions when large amount
> > (more than heap) of data is persisted.
> >
> > brief about scenario .
> >
> > Creating 10 regions, lets call it R1, R2, R3, ... R10 with following
> > config.
> > For R1, R2, Total # of buckets = 113.
> > For R3, R4, R10, #of buckets = 511.
> >
> > All above regions are configured with Disk persistance enabled (ASYNCH)
> and
> > eviction action overflow to disk. like,
> >
> > RegionFactory<> rf =
> > cache.createRegionFactory(RegionShortcut.PARTITION_PERSISTENT_OVERFLOW);
> > rf.setDiskSynchronous(false) //for asynch writes.
> > rf.setDiskStoreName("myDiskStore");PartitionAttributesFactory paf =
> > new
> >
> PartitionAttributesFactory().setRedundantCopies(3).paf.setTotalNumBuckets(511);
> >
> >
> > For each server, Setting both --initial-heap and --max-heap to same, i.e
> > 16gb with --eviction-heap-percentage=81 --critical-heap-percentage=90
> >
> > I keep the system running (puts, gets, delete) for hours to add data over
> > time until i have overflowed tons of data approaching the heap size or
> > more.
> > Now i shutdown my cluster and then attempt to restart but it does not
> come
> > up. It seems during this early phase of recovery (large amount of data),
> > geode surpasses the critical threshold which kills it before successful
> > startup.
> >
> > Is this observation correct and is this a known limitation...? If so any
> > work around for this..?
> >
> > Also, Considering the above case, recovery for (1)
> > ForceDisconnect--->Autoconnect case and (2) normal_shutdown-->restart
> case
> > is a same mechanism or is there any differences?
> >
> > Thanks in advance,.
> >
> > Nilkanth.
> >
>

Reply via email to