Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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
Solr、OutOfMemoryErrors和堆未释放_Solr_Heap Memory - Fatal编程技术网

Solr、OutOfMemoryErrors和堆未释放

Solr、OutOfMemoryErrors和堆未释放,solr,heap-memory,Solr,Heap Memory,我有一个SolrCloud,由三个Solr实例(9Gb堆)组成,每个实例由一个专用主机(12Gb RAM)托管 目前,我们拥有超过1.5亿份文档,而且还在不断增长。有时,我们进行大量查询时,我看到(我认为是)JVM中有一种奇怪的行为: 在平台上,所有实例都会引发OutOfMemoryErrors,当我观察堆上升时的GC时间时,我发现我认为几乎没有GC: 我已将所有实例配置为使用GC1,并遵循了有关配置良好的Solr实例的堆的文档,但我觉得这里确实有问题 有人能帮我理解为什么在进行查询时似乎没

我有一个SolrCloud,由三个Solr实例(9Gb堆)组成,每个实例由一个专用主机(12Gb RAM)托管

目前,我们拥有超过1.5亿份文档,而且还在不断增长。有时,我们进行大量查询时,我看到(我认为是)JVM中有一种奇怪的行为:

在平台上,所有实例都会引发
OutOfMemoryErrors
,当我观察堆上升时的GC时间时,我发现我认为几乎没有GC:

我已将所有实例配置为使用GC1,并遵循了有关配置良好的Solr实例的堆的文档,但我觉得这里确实有问题

有人能帮我理解为什么在进行查询时似乎没有发生GC(可能是缓存调优或内存泄漏)


提前感谢:)

好吧,万一有人碰到这个问题,我的特殊用途确实需要一些缓存调试

TL;博士:

在我的收藏中调整
过滤器缓存
成功了D


我是如何排除故障的:

  • 确认监控问题发生的时间(感谢普罗米修斯和格拉法纳!)
  • 确定了当时应用程序在做什么
  • 试图在受控条件下重现该行为
  • 一旦我能够在任何时候触发问题,随着堆的增加,我每三分钟就会对Solr JVM进行一次堆转储
  • 使用VisualVM,我分析了GC没有清理的对象
  • 因此,我在引用对象中搜索上一项的列表
  • 所有这些都是为了发现FastLRUCache对象包含
    int[]
    数组。在谷歌上搜索我找到的“solr heap growth FastLRUCache”

    因此,现在我们在这个集合中有2.5亿个文档,我所要做的就是将
    filterCache
    设置从其原始
    512
    值调整到一个更低的数字,比如
    20
    左右

    希望这对将来的其他人有所帮助