Java SOLR突然崩溃,出现OutOfMemoryException

Java SOLR突然崩溃,出现OutOfMemoryException,java,solr,out-of-memory,Java,Solr,Out Of Memory,我遇到了Solr离开记忆的问题。情况如下。我们有两个AmazonEC2小实例(3.5G),每个实例在Tomcat6中运行Spring/BlazeDS后端(在负载平衡器后面)。每个实例都有自己的本地Solr实例。磁盘上的索引大小约为500米。JVM设置是从几个月开始的(Xms=512m,Xmx=768)。我们使用Solr根据用户在其个人资料中输入的属性和他们上载的文档查找用户。我们没有使用Solr更新处理程序,只使用select。使用deltaImports完成更新。每个Tomcat实例中的Spr

我遇到了Solr离开记忆的问题。情况如下。我们有两个AmazonEC2小实例(3.5G),每个实例在Tomcat6中运行Spring/BlazeDS后端(在负载平衡器后面)。每个实例都有自己的本地Solr实例。磁盘上的索引大小约为500米。JVM设置是从几个月开始的(Xms=512m,Xmx=768)。我们使用Solr根据用户在其个人资料中输入的属性和他们上载的文档查找用户。我们没有使用Solr更新处理程序,只使用select。使用deltaImports完成更新。每个Tomcat实例中的Spring应用程序都有一个作业,每30秒触发一次/dataimport?命令=增量导入处理程序

如果我没有记错的话(我在这个项目上的时间没有那么长),这项工作好几个月,甚至超过一年。CPU负载处于最低水平,出现了一些异常的峰值

在过去的一周里,两台机器上的SOLR突然发生了OutOfMemory崩溃。我回顾了过去几周我所做的改变,但没有一项与SOLR有关。UI中的错误修复,与电子邮件相关,但同样:SOLR模式或查询中没有任何内容

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

哦,数据集(行数、文档数、实体数等)没有显著变化。这是一个不断增长的过程,但当我将JVM内存增加三倍时,它仍然崩溃,这对我来说没有意义


问题是:你有什么指示给我吗?

测量,而不是猜测。与其猜测发生了什么变化(这可能会导致您的问题),不如使用一些内存泄漏检测工具,例如。使用附带的工具运行Solr,然后查看,它是否会告诉您内存泄漏的确切原因。

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

您可以在core的管理页面上查看Solr缓存的使用情况:

http://localhost:8983/solr/core0/admin/stats.jsp#cache
(用Solr core的名称替换core0)

文档缓存

queryResultCache


除了代码更改,您是否更改了其他内容:例如,将Solr从版本x更新为y,更新Solr运行的tomcat,更新下面的JVM?再想一想,增量更新需要多长时间才能完成?可能接近或超过30秒?