[windup-dev] OOME - GC
Jess Sightler
jsightle at redhat.com
Wed Dec 23 16:08:26 EST 2015
Unfortunately, Titan is prone to keeping a lot of data in memory in some
cases. This stack doesn't make it clear, but it is most likely to occur
during large queries. Doing a few of those in parallel (possible during
report rendering) has been the culprit in the past.
On 12/23/2015 09:55 AM, Brad Davis wrote:
> One of the intentions with TitanDb was to avoid heap issues because I thought it would be flushing to disk. Why is it keeping it in memory like that?
>
> Sent from my iPhone
>
>> On Dec 23, 2015, at 9:37 AM, Jess Sightler <jsightle at redhat.com> wrote:
>>
>> Extremely large apps may require additional memory. I assume that the
>> default for your machine is 4GB of heap?
>>
>> I'd suggest running it with MAX_MEMORY set to 8192m.
>>
>>> On 12/23/2015 07:34 AM, Ondrej Zizka wrote:
>>> FYI, I saw this when running with our largest app:
>>>
>>> [415/420] PostFinalizePhase - RenderRuleProviderReportRuleProvider -
>>> RenderRuleProviderReportRuleProvider_1
>>> Windup report created: /tmp/Windup/resAgent/index.html
>>> Access it at this URL: file:///tmp/Windup/resAgent/index.html
>>> Windup Execution failed due to: Could not execute operation due to
>>> backend exception
>>> com.thinkaurelius.titan.core.TitanException: Could not execute operation
>>> due to backend exception
>>> at
>>> com.thinkaurelius.titan.diskstorage.util.BackendOperation.execute(BackendOperation.java:44)
>>> at
>>> com.thinkaurelius.titan.diskstorage.util.BackendOperation.execute(BackendOperation.java:144)
>>> at
>>> com.thinkaurelius.titan.diskstorage.configuration.backend.KCVSConfiguration.set(KCVSConfiguration.java:145)
>>> at
>>> com.thinkaurelius.titan.diskstorage.configuration.backend.KCVSConfiguration.set(KCVSConfiguration.java:122)
>>> at
>>> com.thinkaurelius.titan.diskstorage.configuration.backend.KCVSConfiguration.remove(KCVSConfiguration.java:163)
>>> at
>>> com.thinkaurelius.titan.diskstorage.configuration.ModifiableConfiguration.remove(ModifiableConfiguration.java:42)
>>> at
>>> com.thinkaurelius.titan.graphdb.database.StandardTitanGraph.shutdownInternal(StandardTitanGraph.java:169)
>>> at
>>> com.thinkaurelius.titan.graphdb.database.StandardTitanGraph.shutdown(StandardTitanGraph.java:158)
>>> at
>>> org.jboss.windup.graph.GraphContextImpl.close(GraphContextImpl.java:320)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>> at java.lang.reflect.Method.invoke(Method.java:606)
>>> at
>>> org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback$2.call(ClassLoaderAdapterCallback.java:123)
>>> at
>>> org.jboss.forge.furnace.util.ClassLoaders.executeIn(ClassLoaders.java:42)
>>> at
>>> org.jboss.forge.furnace.proxy.ClassLoaderAdapterCallback.invoke(ClassLoaderAdapterCallback.java:96)
>>> at
>>> org.jboss.windup.graph.GraphContext_$$_javassist_1bc69704-4043-4e9b-9f41-25ae779ad2b3.close(GraphContext_$$_javassist_1bc69704-4043-4e9b-9f41-25ae779ad2b3.java)
>>> at
>>> org.jboss.windup.bootstrap.commands.windup.RunWindupCommand.runWindup(RunWindupCommand.java:259)
>>> at
>>> org.jboss.windup.bootstrap.commands.windup.RunWindupCommand.execute(RunWindupCommand.java:68)
>>> at
>>> org.jboss.windup.bootstrap.Bootstrap.executePhase(Bootstrap.java:305)
>>> at org.jboss.windup.bootstrap.Bootstrap.run(Bootstrap.java:171)
>>> at org.jboss.windup.bootstrap.Bootstrap.main(Bootstrap.java:97)
>>> Caused by:
>>> com.thinkaurelius.titan.diskstorage.PermanentBackendException: Could not
>>> start BerkeleyJE transaction
>>> at
>>> com.thinkaurelius.titan.diskstorage.berkeleyje.BerkeleyJEStoreManager.beginTransaction(BerkeleyJEStoreManager.java:144)
>>> at
>>> com.thinkaurelius.titan.diskstorage.berkeleyje.BerkeleyJEStoreManager.beginTransaction(BerkeleyJEStoreManager.java:34)
>>> at
>>> com.thinkaurelius.titan.diskstorage.keycolumnvalue.keyvalue.OrderedKeyValueStoreManagerAdapter.beginTransaction(OrderedKeyValueStoreManagerAdapter.java:52)
>>> at
>>> com.thinkaurelius.titan.diskstorage.Backend$2.openTx(Backend.java:270)
>>> at
>>> com.thinkaurelius.titan.diskstorage.util.BackendOperation.execute(BackendOperation.java:131)
>>> at
>>> com.thinkaurelius.titan.diskstorage.util.BackendOperation$1.call(BackendOperation.java:147)
>>> at
>>> com.thinkaurelius.titan.diskstorage.util.BackendOperation.executeDirect(BackendOperation.java:56)
>>> at
>>> com.thinkaurelius.titan.diskstorage.util.BackendOperation.execute(BackendOperation.java:42)
>>> ... 21 more
>>> Caused by: com.sleepycat.je.EnvironmentFailureException: (JE 5.0.73)
>>> Environment must be closed, caused by:
>>> com.sleepycat.je.EnvironmentFailureException: Environment invalid
>>> because of previous exception: (JE 5.0.73)
>>> /tmp/Windup/resAgent/graph/titangraph java.lang.OutOfMemoryError: GC
>>> overhead limit exceeded UNCAUGHT_EXCEPTION: Uncaught Exception in
>>> internal thread, unable to continue. Environment is invalid and must be
>>> closed.
>>> at
>>> com.sleepycat.je.EnvironmentFailureException.wrapSelf(EnvironmentFailureException.java:196)
>>> at
>>> com.sleepycat.je.dbi.EnvironmentImpl.checkIfInvalid(EnvironmentImpl.java:1512)
>>> at com.sleepycat.je.Environment.checkEnv(Environment.java:2185)
>>> at
>>> com.sleepycat.je.Environment.beginTransactionInternal(Environment.java:1313)
>>> at
>>> com.sleepycat.je.Environment.beginTransaction(Environment.java:1284)
>>> at
>>> com.thinkaurelius.titan.diskstorage.berkeleyje.BerkeleyJEStoreManager.beginTransaction(BerkeleyJEStoreManager.java:134)
>>> ... 28 more
>>> Caused by: com.sleepycat.je.EnvironmentFailureException: Environment
>>> invalid because of previous exception: (JE 5.0.73)
>>> /tmp/Windup/resAgent/graph/titangraph java.lang.OutOfMemoryError: GC
>>> overhead limit exceeded UNCAUGHT_EXCEPTION: Uncaught Exception in
>>> internal thread, unable to continue. Environment is invalid and must be
>>> closed.
>>> at
>>> com.sleepycat.je.utilint.StoppableThread$UncaughtHandler.uncaughtException(StoppableThread.java:219)
>>> at java.lang.Thread.dispatchUncaughtException(Thread.java:1986)
>>> Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
>>> at java.util.HashMap.createEntry(HashMap.java:897)
>>> at java.util.HashMap.addEntry(HashMap.java:884)
>>> at java.util.HashMap.put(HashMap.java:505)
>>> at java.util.HashSet.add(HashSet.java:217)
>>> at com.sleepycat.je.utilint.TinyHashSet.add(TinyHashSet.java:93)
>>> at com.sleepycat.je.tree.BIN.addCursor(BIN.java:445)
>>> at com.sleepycat.je.dbi.CursorImpl.addCursor(CursorImpl.java:494)
>>> at
>>> com.sleepycat.je.dbi.CursorImpl.searchAndPosition(CursorImpl.java:2106)
>>> at
>>> com.sleepycat.je.dbi.CursorImpl.searchAndPosition(CursorImpl.java:2020)
>>> at com.sleepycat.je.dbi.DbTree.getDb(DbTree.java:1543)
>>> at com.sleepycat.je.dbi.DbTree.getDb(DbTree.java:1494)
>>> at
>>> com.sleepycat.je.evictor.PrivateEvictor$1.getDb(PrivateEvictor.java:61)
>>> at com.sleepycat.je.evictor.Evictor.evictBatch(Evictor.java:645)
>>> at com.sleepycat.je.evictor.Evictor.doEvict(Evictor.java:548)
>>> at
>>> com.sleepycat.je.evictor.Evictor$BackgroundEvictTask.run(Evictor.java:1241)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>> at java.lang.Thread.run(Thread.java:745)
>>> _______________________________________________
>>> windup-dev mailing list
>>> windup-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/windup-dev
>> _______________________________________________
>> windup-dev mailing list
>> windup-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/windup-dev
> _______________________________________________
> windup-dev mailing list
> windup-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/windup-dev
More information about the windup-dev
mailing list