【发布时间】:2015-10-15 13:05:47
【问题描述】:
我对 Java 世界比较陌生,最近开始使用 Solr。 我在 Amazon t2.small 盒子上运行 Solr 5.2.1,它是单核和 2 gm RAM ubuntu 服务器。我使用 1gb 堆空间配置运行 Solr。 Solr 核心目前有 8M 文档,包含 15 个字段,其中 14 个仅为字符串 ID。另一个是 DateRange 字段类型。
搜索查询通常很长,通常在 15000-20000 个字符的范围内。这是由于过滤查询与 100 范围内的多个字段值一起使用。例如,
/select?fq=field1:("value-1"+OR+"value-2"+.......+OR+"value-n") , n ranges from 1000-2000
我将 Jetty 的 MaxURLLength 修改为 65535,这让我可以这样做。
早些时候,当文档数量
java.lang.OutOfMemoryError: Java heap space
at org.apache.lucene.util.FixedBitSet.<init>(FixedBitSet.java:115)
at org.apache.lucene.spatial.prefix.IntersectsPrefixTreeFilter$1.start(IntersectsPrefixTreeFilter.java:62)
at org.apache.lucene.spatial.prefix.AbstractVisitingPrefixTreeFilter$VisitorTemplate.getDocIdSet(AbstractVisitingPrefixTreeFilter.java:130)
at org.apache.lucene.spatial.prefix.IntersectsPrefixTreeFilter.getDocIdSet(IntersectsPrefixTreeFilter.java:57)
at org.apache.lucene.search.Filter$1.scorer(Filter.java:95)
at org.apache.lucene.search.Weight.bulkScorer(Weight.java:137)
at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:768)
at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:485)
at org.apache.solr.search.SolrIndexSearcher.getDocSetNC(SolrIndexSearcher.java:1243)
at org.apache.solr.search.SolrIndexSearcher.getPositiveDocSet(SolrIndexSearcher.java:926)
at org.apache.solr.search.SolrIndexSearcher.getProcessedFilter(SolrIndexSearcher.java:1088)
at org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:1609)
at org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1485)
at org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:561)
at org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:518)
at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:255)
at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:143)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:2064)
at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:654)
at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:450)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:227)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:196)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
- 上述异常是内存不足造成的吗?
- 是因为查询太长而影响搜索吗?
【问题讨论】:
-
1.是的。如果您阅读“OutOfMemoryError”这个词,您会发现这很明显。 2. 可能,但如果你分析你的应用程序,你就会确定。
-
你的意思是个人资料 Solr?
-
JVM 的 -Xmx 设置是什么?你试过增加它吗?
-
@rudolfv -Xmx 设置为 1gb
-
@sravan_kumar 不,我的意思是描述您的应用程序。你不是在开发 Solr(我希望如此)。
标签: java solr lucene out-of-memory