【问题标题】:SOLR suddenly crashes with OutOfMemoryExceptionSOLR 突然因 OutOfMemoryException 崩溃
【发布时间】:2014-03-25 15:07:03
【问题描述】:

我遇到了 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 处理程序。

这几个月都运行良好,如果我没记错的话甚至可以运行一年多(我对这个项目的时间不长)。 CPU 负载处于最低水平,但有一些异常高峰。

过去一周,我们突然在两台机器上都出现了 SOLR 的 OutOfMemory 崩溃。我回顾了过去几周的更改,但没有一个与 SOLR 相关的接缝。 UI 中的错误修复,与电子邮件相关的内容,但同样:SOLR 架构或查询中没有任何内容。

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

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

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

【问题讨论】:

  • 除了代码更改之外,您是否更改了其他任何内容:例如将 Solr 从版本 x 更新到 y,更新 Solr 运行所在的 tomcat,更新下面的 JVM?
  • 第二个想法,增量更新需要多长时间才能完成?可能接近或超过 30 秒?

标签: java solr out-of-memory


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    (将 core0 替换为 Solr 核心的名称)

    documentCache

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

    queryResultCache

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-14
      • 1970-01-01
      • 1970-01-01
      • 2017-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多