2017-10-27 3 views
0

비정상적인 시간이 지나면 색인이 삭제되는 Azure의 App Service에서 호스팅되는 Umbraco 7.5.6 사이트에서 문제가 발생했습니다.Umbraco Azure에서 색인이 사라지는 것을 조사했습니다.

일부 맞춤 필드를 포함한 정보를 외부 검사 색인에 게시 된 뉴스 기사에 저장하여 색인의 기사를 쿼리합니다. 이는 클라이언트 측 검색 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를 작성 부족이 문제의 예측 불가능한 특성 , 나는 다음에 무엇을 시도해야하는지 확신 할 수 없다. 할

+0

파일을 삭제하는 프로세스를 알아낼 수 있는지 알아보기 위해 Azure 지원 티켓을 열 것입니다. –

+0

"삭제 된"것이 아니라 재 인덱스 프로세스가 인덱스를 삭제 한 다음이를 대체하지 못하는 것으로 의심됩니다. 'ExamineSettings.config' 파일에서 관련 라인을 게시 할 수 있습니까? –

+0

@JasonElkin'ExaminSettings.config' 파일은 Umbraco에서 제공되는 거의 기본 설정입니다. [docs] (https : //our.umbraco.org/documentation/Reference/Config/ExaminSettings /)은'RebuildOnAppStart = "true"'였고, 기본값은 true입니다. 항공권에 설정을 추가했습니다. –

답변

0

우선은 업데이트가 실제로 IO 대기 시간 문제로 고통 수있는 UNC 공유 차례로 조금을 플립 Umbraco을 일으킬 수있다

설정을 웹 응용 프로그램에 첨부 된 파일 시스템을 검사합니다.

당신의 ExamineSettings.configthe following마다 업데이트 시도하고 인덱서 (들)이 추가 : 원격 파일 시스템과 지역 환경의 임시 스토리지 사이에 인덱스를 를 동기화 검사

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

SyncTempEnvDirectoryFactory이 가능 디렉토리의 경우 임시 저장 디렉토리에서 색인에 액세스합니다. 이 설정은 Azure Web Apps에서 Lucene 파일 및 IO 대기 시간의 특성으로 인해 필요합니다.

이렇게하면 성능 문제가 해결됩니다. 그런 다음

, 디버깅

인덱싱 문제는 (정보 수준에서 일부, 일부는 디버그에) Umbraco의 로그에 포착해야한다. Umbraco의 로그를 아직 캡처하지 않은 경우 Papertrail 또는 Application Insights와 같은 로그를 수집하여 삭제의 원인을 식별 할 수 있는지 확인하십시오 (이를 잡기 위해 디버깅 수준을 디버깅해야 할 수도 있음).

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>