Hi

I am really frustrated by this problem.

I have built an index of 1.5 billion data records, with a size of about
170GB. It's been optimised and has 12 separate files in the index directory,
looking like below:

_2.fdt --- 58G
_2.fdx --- 80M
_2.fnm--- 900bytes
_2.si   --- 380bytes
_2.lucene41_0.doc --- 46G
_2_Lucene41_0.pos --- 22G
_2_Lucene41_0.tim --- 37G
_2_Lucene41_0.tip ---  766MB
_2_nrm.cfe  --- 139byte
_2_nrm.cfs  --- 5.7G
segments.gen  --  20byte
segments_1 ---    68byte


It sits on a single server with a memory of 32G allocated to it, using
default solr setting that are provided with the solr example in the
distrubtion.

I started the server ok with 32G memory, but any query other than "q=*:*"
fails, with the following out of memory exception:


java.lang.OutOfMemoryError: OutOfMemoryError likely caused by the Sun VM Bug
described in https://issues.apache.org/jira/browse/LUCENE-1566; try calling
FSDirectory.setReadChunkSize with a value smaller than the current chunk
size (2147483647)</str><str name="trace">java.lang.RuntimeException:
java.lang.OutOfMemoryError: OutOfMemoryError likely caused by the Sun VM Bug
described in https://issues.apache.org/jira/browse/LUCENE-1566; try calling
FSDirectory.setReadChunkSize with a value smaller than the current chunk
size (2147483647)
        at
org.apache.solr.servlet.SolrDispatchFilter.sendError(SolrDispatchFilter.java:462)
        at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:290)
        at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)
        at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:453)
        at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
        at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:560)
        at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
        at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072)
        at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382)
        at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
        at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006)
        at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
        at
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
        at
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
        at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
        at org.eclipse.jetty.server.Server.handle(Server.java:365)
        at
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485)
        at
org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
        at
org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:926)
        at
org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:988)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:635)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
        at
org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
        at
org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
        at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
        at
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.OutOfMemoryError: OutOfMemoryError likely caused by the
Sun VM Bug described in https://issues.apache.org/jira/browse/LUCENE-1566;
try calling FSDirectory.setReadChunkSize with a value smaller than the
current chunk size (2147483647)
        at
org.apache.lucene.store.NIOFSDirectory$NIOFSIndexInput.readInternal(NIOFSDirectory.java:184)
        at
org.apache.lucene.store.BufferedIndexInput.readBytes(BufferedIndexInput.java:158)
        at
org.apache.lucene.codecs.DocValuesArraySource$ByteValues.<init>(DocValuesArraySource.java:113)
        at
org.apache.lucene.codecs.DocValuesArraySource$ByteValues.newFromInput(DocValuesArraySource.java:135)
        at
org.apache.lucene.codecs.lucene40.values.Ints$IntsReader.loadSource(Ints.java:154)
        at
org.apache.lucene.index.DocValues$SourceCache$DirectSourceCache.load(DocValues.java:791)
        at org.apache.lucene.index.DocValues.getSource(DocValues.java:129)
        at
org.apache.lucene.search.similarities.TFIDFSimilarity$ExactTFIDFDocScorer.<init>(TFIDFSimilarity.java:782)
        at
org.apache.lucene.search.similarities.TFIDFSimilarity.exactSimScorer(TFIDFSimilarity.java:761)
        at 
org.apache.lucene.search.TermQuery$TermWeight.scorer(TermQuery.java:88)
        at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:603)
        at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:297)
        at
org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:1435)
        at
org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1310)
        at
org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:401)
        at
org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:410)
        at
org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:208)
        at
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
        at org.apache.solr.core.SolrCore.execute(SolrCore.java:1816)
        at
org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:448)
        at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:269)
        ... 25 more
Caused by: java.lang.OutOfMemoryError
        at sun.misc.Unsafe.allocateMemory(Native Method)
        at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:101)
        at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:288)
        at sun.nio.ch.Util.getTemporaryDirectBuffer(Util.java:155)
        at sun.nio.ch.IOUtil.read(IOUtil.java:169)
        at sun.nio.ch.FileChannelImpl.read(FileChannelImpl.java:612)
        at
org.apache.lucene.store.NIOFSDirectory$NIOFSIndexInput.readInternal(NIOFSDirectory.java:176)
        ... 45 more




I am quite new to Solr and probably did something obviously wrong with such
a huge index... so my question is what are the possible solutions to fix
this?
-by increasing more memory?
-change solr configuration to optimise for large index? if so what should I
be looking into?
-solrcloud? Again im complete novice... any tips on configuration... # of
shards etc?

Many thanks!




--
View this message in context: 
http://lucene.472066.n3.nabble.com/170G-index-1-5-billion-documents-out-of-memory-on-query-tp4042696.html
Sent from the Solr - User mailing list archive at Nabble.com.

Reply via email to