Solr — настройка пространства кучи Java для Sitecore

В нашей установке 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 ГБ, и следующие функции:

  • Номер документов: 102015908
  • Максимальный док: 105114766
  • Использование динамической памяти: -1
  • Удалено документов: 3098858
  • Версия: 5563749
  • Внедрение: 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 ГБ оперативной памяти, 4 ГБ из которых выделены для Java, ниже некоторых аргументов JVM:

-XX:+CMSParallelRemarkEnabled-XX:+CMSScavengeBeforeRemark-XX:+ParallelRefProcEnabled-XX:+PrintGCApplicationStoppedTime-XX:+PrintGCDateStamps-XX:+PrintGCDetails-XX:+PrintGCTimeStamps-XX:+PrintHeapAtGC-XX:+PrintTenuringDistribution-XX:+UseupCMSOnlyInitiating -XX:+UseConcMarkSweepGC-XX:+UseParNewGC-XX:CMSInitiatingOccupancyFraction=50-XX:CMSMaxAbortablePrecleanTime=6000-XX:ConcGCThreads=4-XX:MaxTenuringThreshold=8-XX:NewRatio=3-XX:ParallelGCThreads=4-XX:PretenureSizeThreshold =64m-XX:SurvivorRatio=4-XX:TargetSurvivorRatio=90-Xms4G-Xmx4G-Xss256k-verbose:gc

Основываясь на этом количестве данных, какова правильная конфигурация кучи?


person S. Longo    schedule 12.02.2018    source источник


Ответы (1)


Правильный объем памяти, выделяемой для JVM, должен составлять от 6 до 12 ГБ из 8-16 ГБ, выделенных серверу.

У вас уже есть большой индекс аналитики, и со временем он будет расти еще больше, поэтому вы сохраните опыт высокого использования памяти из-за большого количества операций записи и фиксации индекса. Я бы порекомендовал вам подумать о сегментировании ваших больших индексов или об использовании SolrCloud, который находится на экспериментальной поддержке для вашей версии Sitecore 8.2, подробнее здесь.

person Kate Orlova    schedule 23.10.2019