You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by "Lifan Yang (JIRA)" <ji...@apache.org> on 2015/03/04 11:09:06 UTC
[jira] [Commented] (DIRSERVER-2053) Sometimes apacheds will throw
OutOfMemoryException
[ https://issues.apache.org/jira/browse/DIRSERVER-2053?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14346678#comment-14346678 ]
Lifan Yang commented on DIRSERVER-2053:
---------------------------------------
I got a mem dump after ApacheDS crashed since out of memory. Mem Analyzer showed that there were 3,130,215 {{PageIO}}, cost around 1.6GB mem.
It seems that in {{RecordManager.readPageIOs}}, the following loop will be a dead loop.
{code}
while ( dataRead < limit )
{
PageIO page = fetchPage( nextPage );
listPages.add( page );
nextPage = page.getNextPage();
dataRead += pageSize - LONG_SIZE;
if ( nextPage == NO_PAGE )
{
page.setNextPage( NO_PAGE );
break;
}
}
{code}
I wonder that whether it caused by {{nextPage}} cannot be equal with {{NO_PAGE}} forever. Is it possible?
> Sometimes apacheds will throw OutOfMemoryException
> --------------------------------------------------
>
> Key: DIRSERVER-2053
> URL: https://issues.apache.org/jira/browse/DIRSERVER-2053
> Project: Directory ApacheDS
> Issue Type: Bug
> Components: ldap
> Affects Versions: 2.0.0-M19
> Environment: CentOS 6.5 with apacheds M19 installed.
> Reporter: linzhao
> Priority: Blocker
>
> After injecting some data into apacheds and restart it. Sometimes the apacheds can't be started, it will throw OutOfMemoryException. The data entries will less than 600. Exception list below:
> INFO | jvm 1 | 2015/03/04 23:52:09 | Dumping heap to /opt/polycom/apacheds-dumps/java_pid24024.hprof ...
> INFO | jvm 1 | 2015/03/04 23:52:19 | Heap dump file created [2094548383 bytes in 9.597 secs]
> INFO | jvm 1 | 2015/03/04 23:52:19 | Error in WrapperListener.start callback. java.lang.OutOfMemoryError: GC overhead limit exceeded
> INFO | jvm 1 | 2015/03/04 23:52:19 | java.lang.OutOfMemoryError: GC overhead limit exceeded
> INFO | jvm 1 | 2015/03/04 23:52:19 | at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:57)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at java.nio.ByteBuffer.allocate(ByteBuffer.java:335)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.mavibot.btree.RecordManager.fetchPage(RecordManager.java:3045)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.mavibot.btree.RecordManager.readPageIOs(RecordManager.java:797)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.mavibot.btree.RecordManager.deserialize(RecordManager.java:987)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.mavibot.btree.PersistedPageHolder.fetchElement(PersistedPageHolder.java:133)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.mavibot.btree.PersistedPageHolder.getValue(PersistedPageHolder.java:113)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.mavibot.btree.AbstractPage.get(AbstractPage.java:252)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.mavibot.btree.AbstractBTree.get(AbstractBTree.java:505)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.mavibot.btree.PersistedBTree.get(PersistedBTree.java:43)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.server.core.partition.impl.btree.mavibot.MavibotTable.get(MavibotTable.java:317)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.server.core.partition.impl.btree.mavibot.MavibotIndex.forwardLookup(MavibotIndex.java:305)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.server.core.partition.impl.btree.mavibot.MavibotIndex.forwardLookup(MavibotIndex.java:58)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.server.core.partition.impl.btree.AbstractBTreePartition.getEntryId(AbstractBTreePartition.java:2473)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.server.xdbm.search.impl.DefaultSearchEngine.computeResult(DefaultSearchEngine.java:123)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.server.core.partition.impl.btree.AbstractBTreePartition.search(AbstractBTreePartition.java:1141)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.server.core.shared.partition.DefaultPartitionNexus.search(DefaultPartitionNexus.java:624)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.server.core.shared.ReferralManagerImpl.init(ReferralManagerImpl.java:178)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.server.core.shared.ReferralManagerImpl.<init>(ReferralManagerImpl.java:86)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.server.core.referral.ReferralInterceptor.init(ReferralInterceptor.java:213)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.server.core.DefaultDirectoryService.initInterceptors(DefaultDirectoryService.java:685)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.server.core.DefaultDirectoryService.initialize(DefaultDirectoryService.java:1818)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.server.core.DefaultDirectoryService.startup(DefaultDirectoryService.java:1244)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.server.ApacheDsService.initDirectoryService(ApacheDsService.java:323)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.server.ApacheDsService.start(ApacheDsService.java:182)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.apache.directory.server.wrapper.ApacheDsTanukiWrapper.start(ApacheDsTanukiWrapper.java:72)
> INFO | jvm 1 | 2015/03/04 23:52:19 | at org.tanukisoftware.wrapper.WrapperManager$12.run(WrapperManager.java:2788)
> STATUS | wrapper | 2015/03/04 23:52:20 | <-- Wrapper Stopped
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)