Проблема с обновлением индекса базы данных Sitecore Core

Мы используем многосерверную среду с конфигурацией 1 CMS и 2 CD. CORE и WEB CMS используются только CD 2, а CD 1 - как его собственная сеть и ядро.

Проблема в том, что файлы журнала CD2 фиксируют указанную ниже ошибку:

    ManagedPoolThread #14 00:00:05 INFO  Job started:Index_Update_IndexName=sitecore_core_index
    ManagedPoolThread #14 00:00:05 ERROR Exception
    Exception: System.Reflection.TargetInvocationException
    Message: Exception has been thrown by the target of an invocation.
    Source: mscorlib
    at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments,   Signature sig, Boolean constructor)
    at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[]  parameters, Object[] arguments)
    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
    at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
    at (Object , Object[] )
    at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
    at Sitecore.Jobs.Job.ThreadEntry(Object state)

  Nested Exception

  Exception: System.InvalidOperationException
  Message: Configuration
  Source: Sitecore.ContentSearch.LuceneProvider
  at Sitecore.ContentSearch.LuceneProvider.LuceneIndex.EnsureInitialized()
  at Sitecore.ContentSearch.LuceneProvider.LuceneIndex.CreateUpdateContext()
  at Sitecore.ContentSearch.LuceneProvider.LuceneIndex.PerformUpdate(IEnumerable`1 indexableUniqueIds, IndexingOptions indexingOptions)

В ходе нашего исследования мы обнаружили, что этот тип ошибки фиксируется при проблеме с обновлением индекса базы данных Core. Кроме того, это также было подтверждено сканированием журнала и проверкой конфигурации в \App_Config\Include\Sitecore.ContentSearch.Lucene.Index.Core, в котором это задание определено для обновления индекса.

Получение записей журнала сканирования

    INFO  [Index=sitecore_core_index] IntervalAsynchronousUpdateStrategy executing.
    INFO  [Index=sitecore_core_index] Event Queue is forced   

В качестве следующего шага мы предприняли следующие шаги, но проблема все еще существует:

Удалены старые индексы Core и перестроены как для CMS, так и для CD2.

Мои вопросы:

Если у нас есть одно и то же ядро ​​для CMS и CD2, то требуется ли перестроение индекса для обеих сред, потому что, согласно моей информации, индекс сохраняется на диске.

Во-вторых, мы столкнулись с проблемой кэширования только для CD2, связано ли это с обновлением индекса.

В-третьих, сведения о конфигурации Sitecore.ContentSearch.Lucene.Index.Core также присутствуют в CMS и CD2, поэтому это отвечает за это исключение, поскольку два процесса обновляют индексы для одних и тех же индексов Core.

Наконец, у нас есть отдельное ядро ​​​​и сеть для CD1 с включенной репликацией, но мы по-прежнему видим, что эти ошибки фиксируются и на CD1. Мы наблюдаем эти ошибки за последние несколько месяцев, и в последнее время частота ошибок увеличилась, из-за чего они потребляют огромный кусок физической памяти на CD2 и вызывают более высокое время отклика приложения.


person Priyank Phulariya    schedule 24.09.2014    source источник


Ответы (1)


Я понял, в чем проблема в моем окружении. Посмотрите в свой файл журнала и, прежде чем вы увидите это исключение, вы видите следующее:

ManagedPoolThread #11 10:07:24 INFO Загрузка словаря из базы данных. Домен: «Словарь». Язык: 'en'. ManagedPoolThread #11 10:07:24 ОШИБКА Ошибка сохранения {путь к файлу sitecore}\Website\temp\dictionary.dat. Исключение: System.IO.IOException Сообщение: файл '{путь к файлу sitecore}\Website\temp\dictionary.dat' уже существует. Источник: mscorlib в System.IO.__Error.WinIOError (Int32 errorCode, String mayFullPath) в System.IO.FileStream.Init (путь String, режим FileMode, доступ к FileAccess, права Int32, логическое значение useRights, общий доступ к FileShare, размер буфера Int32, параметры FileOptions , SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) в System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy) в System.IO.FileStream..ctor (путь строки, режим FileMode, доступ к FileAccess, общий ресурс FileShare, размер буфера Int32) в Sitecore.Globalization.Translate.Save()

Если это так, удалите это и перезапустите свой сайт. Это должно решить проблему, которую вы видите.

person Nick Cipollina    schedule 19.12.2014