Sitecore核心数据库索引更新问题

时间:2014-09-24 05:43:01

标签: indexing lucene rebuild

我们正在使用具有1个CMS和2个CD配置的多服务器环境。 CMS的CORE和WEB仅由CD 2共享,CD 1作为其自己的Web和核心共享。

问题是 - 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启用了单独的核心和Web,并启用了复制,但我们仍然看到这些错误也在CD1中捕获。我们在过去的几个月里看到了这些错误,最近错误的频率增加了,因为它在CD2中占用了大量的物理内存并导致应用程序的响应时间更长。

1 个答案:

答案 0 :(得分:0)

我弄清楚环境中的问题是什么。查看您的日志文件,在您看到该exeption之前,您是否看到以下内容:

ManagedPoolThread#11 10:07:24 INFO从数据库加载字典。域名:'词典'。语言:'en'。 ManagedPoolThread#11 10:07:24 ERROR保存{sitecore文件路径} \ Website \ temp \ dictionary.dat时出错。 例外:System.IO.IOException 消息:文件“{sitecore文件路径} \ Website \ temp \ dictionary.dat”已存在。 资料来源:mscorlib    在System.IO .__ Error.WinIOError(Int32 errorCode,String maybeFullPath)    at System.IO.FileStream.Init(String path,FileMode mode,FileAccess access,Int32 rights,Boolean useRights,FileShare share,Int32 bufferSize,FileOptions options,SECURITY_ATTRIBUTES secAttrs,String msgPath,Boolean bFromProxy,Boolean useLongPath,Boolean checkHost)    at 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 bufferSize)    在Sitecore.Globalization.Translate.Save()

如果有,请将其删除并重新启动您的网站。这应该可以解决您所看到的问题。