Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory leaks Solr使用了太多内存_Memory Leaks_Solr_Jvm_Mmap - Fatal编程技术网

Memory leaks Solr使用了太多内存

Memory leaks Solr使用了太多内存,memory-leaks,solr,jvm,mmap,Memory Leaks,Solr,Jvm,Mmap,我们有一个Solr3.4实例在Windows2008R2上运行,带有OracleJava6HotSpotJDK,该实例没有响应。当我们查看机器时,我们注意到可用的物理内存变为零 Tomcat7.exe进程正在使用~70Gigs(专用工作集),但工作集(内存)正在使用系统上的所有内存。Tomcat/Solr日志中没有错误。我们使用VMMap来标识内存正用于映射Solr segment文件 重新启动Tomcat暂时解决了这个问题,但最终还是恢复了 然后,我们尝试减小JVM的大小,为内存映射文件提供更

我们有一个Solr3.4实例在Windows2008R2上运行,带有OracleJava6HotSpotJDK,该实例没有响应。当我们查看机器时,我们注意到可用的物理内存变为零

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

重新启动Tomcat暂时解决了这个问题,但最终还是恢复了

然后,我们尝试减小JVM的大小,为内存映射文件提供更多的空间,但是Solr最终会对旧一代的100%无响应。再次重置修复了该问题,但在我们重置之前,它没有抛出内存不足异常


目前,我们的蜘蛛侠意识告诉我们,当内存紧张时,缓存不会收缩,可能有太多的MappedBytebuffer挂在周围,因此操作系统无法从内存映射文件中释放内存。

这可能是由于SOLR对目录使用的新默认策略(它试图将它们映射到RAM或类似的东西)

阅读以下内容:

参数太多,信息太少,无法提供任何详细信息。这个答案与所提到的系统一样,也是非常古老的

以下是一些有助于我的经验:

  • 相反,要减少Tomcat和SOLR中的RAM使用,以降低交换的风险。留出系统空间
  • 如果这个“开始”在没有对Tomcat或SOLR配置进行任何更改的情况下出现-这可能是因为SOLR必须索引和查询的数据量增加了。这可能意味着原始配置一开始就不好,或者已经达到了当前资源的限制,必须进行检查。这是哪一个
  • 检查查询(如果您可以影响它们):将经常请求的任何子查询结构移动到filterqueries中,将非常单独的请求结构移动到常规查询参数中。减少查询缓存,增加/保留筛选器查询缓存-或者减少筛选器缓存,以防系统中不经常使用筛选器查询
  • 检查SOLR的schema.xml中的配置错误(实际上可能只是误解)。我曾经遇到过这样的情况:导入字段会大量创建,导致RAM溢出
  • 如果在导入过程中发生:请检查导入过程是否设置为“自动提交”并经常提交,以及是否进行了优化-也许可以减少提交次数,并在最后只优化一次
  • 升级Java、Tomcat和SOLR

您是在Tika/Solr Cell中使用内容提取还是在查询中使用某种排序?很好奇您使用的是哪个JVM版本。6u17和更早版本存在几个严重的JIT和GC问题。您正在索引什么类型的数据?