Umbraco检查Azure上的索引消失

时间:2017-10-27 11:33:24

标签: c# azure umbraco azure-web-sites examine

我在Azure上的App Service中托管的Umbraco 7.5.6网站上遇到了一个问题,其中索引似乎在非特定时间后被删除。

我们将信息(包括一些自定义字段)存储在外部检查索引中的已发布新闻文章中,以便从索引中查询故事。这是由面向客户的搜索API消耗的。

最初,我们认为这可能是由Azure交换服务器引起的,因此从ExamineSettings.config下的路径中删除了{computerName}参数。但是,这似乎没有任何效果。

我们当前的索引路径为~/App_Data/TEMP/ExamineIndexes/External/

ExamineSettings.config文件如下:

<Examine>
<ExamineIndexProviders>
<providers>
  <add name="InternalIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"
       supportUnpublished="true"
       supportProtected="true"
       analyzer="Lucene.Net.Analysis.WhitespaceAnalyzer, Lucene.Net"/>

  <add name="InternalMemberIndexer" type="UmbracoExamine.UmbracoMemberIndexer, UmbracoExamine"
       supportUnpublished="true"
       supportProtected="true"
       analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net"/>

    <!-- default external indexer, which excludes protected and unpublished pages-->
    <add name="ExternalIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"/>

</providers>
</ExamineIndexProviders>

<ExamineSearchProviders defaultProvider="ExternalSearcher">
<providers>
  <add name="InternalSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine"
       analyzer="Lucene.Net.Analysis.WhitespaceAnalyzer, Lucene.Net"/>

  <add name="ExternalSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine" />

  <add name="InternalMemberSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine"
       analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net" enableLeadingWildcard="true"/>

</providers>
</ExamineSearchProviders>

</Examine>

由于此问题的不可预测性,如果没有编写WebJob以定期重新发布文章,我不确定接下来要尝试什么。

1 个答案:

答案 0 :(得分:1)

首先要做的是更新您的检查配置

附加到网络应用程序的文件系统实际上是一个UNC共享,可能会遇到IO延迟问题,这反过来会导致Umbraco稍微翻转一下。

尝试按照the following更新ExamineSettings.config并将其添加到索引器中:

directoryFactory="Examine.LuceneEngine.Directories.SyncTempEnvDirectoryFactory,Examine"
  

SyncTempEnvDirectoryFactory使Examine能够同步索引   远程文件系统和本地环境之间的临时   存储目录,将从临时访问索引   存储目录。由于其性质,此设置是必需的   Azure Web Apps上的Lucene文件和IO延迟。

这应该将性能问题排除在外。

然后,调试

索引问题应该在Umbraco的日志中找到(一些在Info级别,一些在Debug)。如果您尚未捕获Umbraco的日志,请使用类似Papertrail或Application Insights的内容来收集日志,看看您是否可以识别导致删除的内容(您可能需要将日志记录级别删除到Debug以捕获它。)

N.B如果您确实将日志推送到外部服务,然后将其包装在Umbraco Core的Async / Parallel提供程序中:这是一个示例配置。

<log4net>

  <root>
    <priority value="Info"/>
    <appender-ref ref="AsynchronousLog4NetAppender" />
  </root>

  <appender name="AsynchronousLog4NetAppender" type="Umbraco.Core.Logging.ParallelForwardingAppender,Umbraco.Core">
    <appender-ref ref="PapertrailRemoteSyslogAppender"/>
  </appender>

  <appender name="PapertrailRemoteSyslogAppender" type="log4net.Appender.RemoteSyslogAppender">
    <facility value="Local6" />
    <identity value="%date{yyyy-MM-ddTHH:mm:ss.ffffffzzz} your-site-name %P{log4net:HostName}" />
    <layout type="log4net.Layout.PatternLayout" value="%level - %message%newline" />
    <remoteAddress value="logsN.papertrailapp.com" />
    <remotePort value="XXXXX" />
  </appender>

  <!--Here you can change the way logging works for certain namespaces  -->

  <logger name="NHibernate">
    <level value="WARN" />
  </logger>

</log4net>