solrj 4 にマルチスレッド アプリケーションがあります。スレッド (最大 25) は HttpSolrServer への 1 つの接続を共有します。各スレッドは 1 つのクエリを実行します。これは、次のメッセージで最終的にクラッシュするまで、しばらくはうまくいきました。
Jan 12, 2013 12:52:15 PM org.apache.http.impl.client.DefaultRequestDirector tryExecute
INFO: Retrying request
Jan 12, 2013 12:52:15 PM org.apache.http.impl.client.DefaultRequestDirector tryExecute
INFO: I/O exception (java.net.SocketException) caught when processing request: Connection reset
この例外をキャッチして、サーバーへの接続をリセットしたいと思います。上記のメッセージではスタック トレース全体を取得できないため、どこでこれを行うべきかわかりません。サーバーを参照する唯一の場所は、次のクエリを作成するためです。
server.query( query )
しかし、これがスローする唯一の例外は、私が現在処理している SolrServerException です。
どんな提案でも大歓迎です。
参考までに、これは私が最初のサーバー接続を設定する方法です:
server = new HttpSolrServer(url);
server.setSoTimeout(0);
server.setDefaultMaxConnectionsPerHost(50);
server.setMaxTotalConnections(128);