2011-10-17 2 views
2

SolrConnection 개체에 사용되는 제한 시간 값을 연장/수정하려면 어떻게합니까?SolrConnection에서 타임 아웃을 연장하려면 어떻게해야합니까? (SolrConnectionException : 작업 시간이 초과되었습니다)

제공되는 기본 연결 제한 시간 내에 완료되지 않는 것으로 보이는 장기 실행 최적화 작업이 있습니다. 사용중인 작업은 ISolrOperations<?>.Optimize()입니다. ISolrOperations 개체를 직접 사용하여 시간 제한을 늘릴 수있는 옵션이 표시되지 않습니다.

다중 코어를 갖기 위해 인스턴스화를 위해 Castle Windsor IoC 컨테이너를 사용하고 있습니다.

여기에 전체 스택 트레이스입니다 :

SolrNet.Exceptions.SolrConnectionException: The operation has timed out ---> System.Net.WebException: The operation has timed out 
    at System.Net.HttpWebRequest.GetResponse() 
    at HttpWebAdapters.Adapters.HttpWebRequestAdapter.GetResponse() in c:\prg\SolrNet\svn\HttpWebAdapters\Impl\HttpWebRequestAdapter.cs:line 36 
    at SolrNet.Impl.SolrConnection.GetResponse(IHttpWebRequest request) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrConnection.cs:line 201 
    at SolrNet.Impl.SolrConnection.PostStream(String relativeUrl, String contentType, Stream content, IEnumerable`1 parameters) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrConnection.cs:line 113 
    --- End of inner exception stack trace --- 
    at SolrNet.Impl.SolrConnection.PostStream(String relativeUrl, String contentType, Stream content, IEnumerable`1 parameters) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrConnection.cs:line 121 
    at SolrNet.Impl.SolrConnection.Post(String relativeUrl, String s) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrConnection.cs:line 87 
    at SolrNet.Commands.OptimizeCommand.Execute(ISolrConnection connection) in c:\prg\SolrNet\svn\SolrNet\Commands\OptimizeCommand.cs:line 76 
    at SolrNet.Impl.SolrBasicServer`1.Send(ISolrCommand cmd) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrBasicServer.cs:line 96 
    at SolrNet.Impl.SolrBasicServer`1.SendAndParseHeader(ISolrCommand cmd) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrBasicServer.cs:line 106 
    at SolrNet.Impl.SolrBasicServer`1.Optimize(CommitOptions options) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrBasicServer.cs:line 69 
    at SolrNet.Impl.SolrServer`1.Optimize() in c:\prg\SolrNet\svn\SolrNet\Impl\SolrServer.cs:line 206 
    at NationalLaborRelations.SearchAgent.SearchAgentBase.Optimize(ISolrOperations`1 s) in C:\PROJECTS\NLRB\Search\SearchAgent\SearchAgent\SearchAgentBase.cs:line 354 

참고 최적화가 성공적으로 일어날 않습니다,하지만이 오류를 던지기 전에 완료 될 때까지 그 SolrNet 기다리지 않습니다.

+0

내장 IoC 컨테이너를 사용하고 있습니까? 또는 다른 것과 통합할까요? –

+0

여러 코어에 Windsor 컨테이너를 사용하고 있습니다. –

+0

작은 세부 사항을 질문에 추가 할 수 있습니까? –

답변

3

이 제한 시간은 무시해도됩니다. 이미 알았 듯이 Solr에서 명령이 성공적으로 실행됩니다.

또는 당신은 당신이 윈저의 구성 요소 모델 이벤트와 함께 구성 할 수있는 연결 제한 시간을 설정하려면 :

var c = new WindsorContainer(); 
c.Kernel.ComponentModelCreated += model => { 
    if (model.Implementation == typeof(SolrConnection)) 
     model.Parameters.Add("Timeout", "200000"); 
}; 
c.AddFacility("solr", new SolrNetFacility("http://localhost:8983/solr")); // or whatever 

시간 제한 값을 밀리 초 단위로 표시됩니다.

+0

이것은 나를 위해 작동하지 않았다. 매개 변수 이름이 맞습니까? 수술은 약 복용하고 있습니다. 약 3 분 후에 종료됩니다. 100 초. –

+0

@unicron : 테스트를 마친 후 저에게 적합합니다 : https://github.com/mausch/SolrNet/commit/21e3001a8d5227a6b12cd122bc79a001446036fe –

+0

확인해 주셔서 감사합니다. Timeout 값은 밀리 초 단위이며 초라고 생각했습니다. 참고 : http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.timeout.aspx –

관련 문제