2011-10-17 13 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

確認、ありがとう。タイムアウト値はミリ秒で、私はそれが秒だと思った。 Ref:http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.timeout.aspx –

関連する問題