As Erick says, you are probably hitting an occasional automatic background merge which takes a bit longer. That is not an indication of a problem. Increase your connection timeout. Check the log to see how long the merge or "slow commit" takes. You have a timeout of 1000 which is 1 second. Make it longer, and possibly put the commit or other indexing operations in a loop with a few retries before considering connection timeout a fatal error. Occasional delays are a fact or life in a multi-process, networked environment.

-- Jack Krupansky

-----Original Message----- From: Erick Erickson
Sent: Wednesday, June 06, 2012 7:02 AM
To: solr-user@lucene.apache.org
Subject: Re: ReadTimeout on commit

You're probably hitting a background merge and the request is timing
out even though the commit succeeds. Try querying for the data in
the last packet to test this.

And you don't say what version of Solr you're using.

One test you can do is increase the number of documents before
a commit. If merging is the problem I'd expect you to _still_ encounter
this problem, just much less often. That would at least tell you if this
is the right path to investigate.

Best
Erick

On Tue, Jun 5, 2012 at 6:51 AM,  <spr...@gmx.eu> wrote:
Hi,

I'm indexing documents in batches of 100 docs. Then commit.

Sometimes I get this exception:

org.apache.solr.client.solrj.SolrServerException:
java.net.SocketTimeoutException: Read timed out
       at
org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpS
olrServer.java:475)
       at
org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpS
olrServer.java:249)
       at
org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractU
pdateRequest.java:105)
       at
org.apache.solr.client.solrj.SolrServer.commit(SolrServer.java:178)


I found some similar postings in the web, all recommending autocommit. This
is unfortunately not an option for me, because I have to know whether solr
committed or not.

What is causing this timeout?

I'm using these settings in solrj:

       server.setSoTimeout(1000);
         server.setConnectionTimeout(100);
         server.setDefaultMaxConnectionsPerHost(100);
         server.setMaxTotalConnections(100);
         server.setFollowRedirects(false);
         server.setAllowCompression(true);
         server.setMaxRetries(1);

Thank you


Reply via email to