Solr - Java堆空间调优

时间:2018-02-12 16:37:25

标签: sitecore solr5 sitecore8.2

在我们的sitecore 8.2安装中,我们使用Solr 5.1.0作为索引系统。 最近我们遇到了一些问题:

[sitecore_analytics_index] org.apache.solr.common.SolrException; org.apache.solr.common.SolrException:打开新搜索器时出错 引起:org.apache.lucene.store.AlreadyClosedException:此IndexWriter已关闭 引起:java.lang.OutOfMemoryError:Java堆空间

选择堆阈值给solr的正确方法是什么?

目前,在不同的核心中,唯一超过几百兆的核心是sitecore_analytics_index,其大小为32.67 GB,具有以下特点:

  • Num Docs:102015908
  • Max Doc:105114766
  • 堆内存使用情况:-1
  • 已删除文档:3098858
  • 版本:5563749
  • 默认地将Impl:org.apache.solr.core.NRTCachingDirectoryFactory
  • org.apache.lucene.store.NRTCachingDirectory:NRTCachingDirectory(lockFactory = org.apache.lucene.store.NativeFSLockFactory @ 2e51764c; maxCacheMB = 48.0 maxMergeSizeMB = 4.0)

服务器有6 GB的RAM,其中4 GB专用于Java,低于JVM的一些args:

-XX:+ CMSParallelRemarkEnabled-XX:+ CMSScavengeBeforeRemark-XX:+ ParallelRefProcEnabled-XX:+ PrintGCApplicationStoppedTime-XX:+ PrintGCDateStamps-XX:+ PrintGCDetails-XX:+ PrintGCTimeStamps-XX:+ PrintHeapAtGC-XX:+ PrintTenuringDistribution-XX :+ UseCMSInitiatingOccupancyOnly-XX:+ UseConcMarkSweepGC-XX:+ UseParNewGC-XX:CMSInitiatingOccupancyFraction = 50-XX:CMSMaxAbortablePrecleanTime = 6000-XX:ConcGCThreads = 4-XX:MaxTenuringThreshold = 8-XX:NewRatio = 3-XX:ParallelGCThreads = 4- XX:PretenureSizeThreshold =64米-XX:SurvivorRatio = 4-XX:TargetSurvivorRatio = 90 Xms4G-Xmx4G-Xss256k-冗长:GC

基于这个数据量,这是堆的正确配置吗?

1 个答案:

答案 0 :(得分:0)

为JVM分配的正确内存量应在服务器专用的8-16 GB内存中的6到12 GB之间。

您已经有一个庞大的分析索引,并且随着时间的推移它会增长得更多,因此,由于大量的索引写和提交操作,您将继续体验到高内存利用率。我建议您考虑对您的大索引进行分片,或者使用Sitecore 8.2版的实验支持下的SolrCloud,了解更多here