Solr堆转储 - 如何诊断

时间:2017-03-07 19:12:58

标签: search solr lucene

在Out of Memory错误上获得堆转储。 现在在Visual VM中分析转储

看到很多byte []数组(占我们8GB堆的77%) TreeMap$Entry FieldCacheImpl$SortedDocValues

我们正在考虑转换为启用docValues以确认'对于我们排序的字段,但在我们试验DocValues并需要我们的200M文档索引的重新索引之前,我宁愿确定根本原因 在我们的4个数据中心中。

有关我应该在此堆转储中寻找什么的建议以获得明确的根本原因?

1 个答案:

答案 0 :(得分:1)

通过启用docvalues,几乎可以保证事情会有所改善。如果您在进行大型重建索引之前需要一些证据,那么您可以:

  1. 创建当前设置的较小版本,例如20M
  2. 以较小的jvm堆大小运行它,例如1GB。看它OOM,如果没有,减少堆,直到它OOMs
  3. 现在启用docvalues,reindex并在同一堆上运行,它应该显然更好
  4. 现在,您可以安心地在真实的产品设置中实施docvalues
  5. 编辑您的评论:好吧,如果您要对200M文档进行排序...不确定4GB的堆是否如此巨大。你可以检查你是否正在缓存你不需要/无效的fq(比如现在在具有毫秒精度的日期字段中)。 fqs将在大型索引中占用一些内存。