2014-03-25 86 views
0

我遇到了Solr出问题OutOfMemory。情况如下。我们有2个Amazon EC2小型实例(3.5G),每个在Tomcat 6中运行Spring/BlazeDS后端(位于负载均衡器之后)。每个实例都有自己的本地Solr实例。磁盘上的索引大小约为500M。 JVM设置从几个月开始(Xms = 512m,Xmx = 768)。我们使用Solr根据他们输入的个人资料和他们上传的文件来查找人员。我们不使用Solr更新处理程序,只使用select。更新使用deltaImports完成。每个Tomcat实例中的Spring应用程序都有一个作业,每30秒触发一次/ dataimport?command = delta-import处理程序。SOLR突然与OutOfMemoryException崩溃

这个效果很好,好几个月,即使是一年以上,如果我没错的话(我对这个项目没有那么长时间)。 CPU负载是最低的,特别是一些峰值。

上周我们突然在两台机器上都出现了OutOfMemory崩溃。我回顾了过去几周的变化,但没有涉及到SOLR。用户界面中的错误修复,与电子邮件相关的一些问题,但是又是如此:SOLR模式或查询中没有任何内容。

今天,我们将Ec2实例更改为m1.large(7.5G),将SOLR JVM设置更改为-Xms = 2048/-Mmx = 3072。这有点帮助,他们跑了3个4小时,但最终他们也崩溃了。

哦,数据集(行数,文档,实体等)没有明显变化。有一个不断增长,但是当我将JVM内存增加了三倍时,它仍然没有意义,它仍然崩溃...

问题:你有什么方向可以指向我吗?

+0

除了更改代码外,您是否更改了其他任何内容:例如,将Solr从版本x更新为y,更新Solrs运行的tomcat,更新下面的JVM? – cheffe

+0

第二个想法是,增量更新需要多长时间才能完成?大概接近或超过30秒? – cheffe

回答

0

衡量,而不是猜测。而不是猜测,发生了什么变化,这可能会导致你的问题,你最好采用一些内存泄漏检测工具,例如​​。用附带的工具运行你的Solr,看看它会告诉你内存泄漏的确切原因。

0

看看你的Solr缓存设置。减小文档缓存的大小帮助我们稳定了Solr 3.6服务器,该服务器也出现OutOfMemory错误。查询结果缓存大小也可能与您的情况相关,它不在我的范围内。

您可以看到管理页面上Solr的高速缓存使用的核心:

http://localhost:8983/solr/core0/admin/stats.jsp#cache 

documentCache

https://wiki.apache.org/solr/SolrCaching#documentCache

(与你的Solr核心的名称替换CORE0)

queryResultCache

https://wiki.apache.org/solr/SolrCaching#queryResultCache