gpt4 book ai didi

memory-leaks - Solr 使用太多内存

转载 作者:行者123 更新时间:2023-12-04 03:19:51 25 4
gpt4 key购买 nike

我们有一个 Solr 3.4 实例在 Windows 2008 R2 上运行,带有 Oracle Java 6 Hotspot JDK,它变得无响应。当我们查看机器时,我们注意到可用物理内存变为零。

Tomcat7.exe 进程正在使用 ~70Gigs(私有(private)工作集),但工作集(内存)正在使用系统上的所有内存。 Tomcat/Solr 日志中没有错误。我们使用 VMMap 来识别内存正在用于内存映射 Solr 段文件。

重新启动Tomcat暂时解决了这个问题,但它最终又回来了。

然后我们尝试减小 JVM 大小,以便为内存映射文件提供更多空间,但是 Solr 最终在老年代达到 100% 时变得无响应。再次重置解决了问题,但在我们重置之前它没有引发内存不足异常。

目前,我们的蜘蛛侠感觉告诉我们,当内存压力存在时,缓存不会缩小,并且可能有太多的 MappedByteBuffers 卡在周围,以至于操作系统无法从内存映射文件中释放内存。

最佳答案

参数太多,信息太少,无法提供任何细节。这个答案也很老,就像提到的系统一样。

以下是一些对我的经验有所帮助的事情:

  • 而是减少 Tomcat 和 SOLR 中的 RAM 使用量,以降低交换的风险。给系统留出呼吸的空间。
  • 如果这个“开始”出现而没有对 Tomcat 或 SOLR 配置进行任何更改 - 可能是因为 SOLR 必须索引和查询的数据量增加了。这可能意味着原始配置一开始就不好,或者已经达到当前资源的限制并且必须进行审查。哪一个?
  • 检查查询(如果您可以影响它们):将任何经常请求的子查询结构移动到过滤器查询中,将非常个别的请求结构移动到常规查询参数中。减少查询缓存,增加/保留过滤器查询缓存 - 或减少过滤器缓存,以防系统中没有太多使用过滤器查询。
  • 检查 SOLR 的 schema.xml 的配置错误(可能只是误解)。我遇到过一次:虽然导入字段会被大量创建,导致 RAM 溢出。
  • 如果它发生在导入期间:检查导入过程是否设置为自动提交并经常提交并且也进行优化 - 也许可以减少提交频率并在最后只优化一次。
  • 升级 Java、Tomcat 和 SOLR
  • 关于memory-leaks - Solr 使用太多内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9894687/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com