多线程solrj查询偶尔会出现不可预测的异常

时间:2013-01-10 20:00:30

标签: solr solrj

我有一个使用solrj 4的多线程应用程序。最多有25个线程。每个线程使用HttpSolrServer创建一个连接,并运行一个查询。大部分时间这都很好。但偶尔我会得到以下例外:

Jan 10, 2013 9:29:07 AM org.apache.http.impl.client.DefaultRequestDirector     tryConnect
INFO: I/O exception (java.net.NoRouteToHostException) caught when connecting    to the target host: Cannot assign requested address
Jan 10, 2013 9:29:07 AM org.apache.http.impl.client.DefaultRequestDirector tryConnect
INFO: Retrying connect
Exception in thread "main" java.util.concurrent.ExecutionException: java.lang.NullPointerException
    at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
    at java.util.concurrent.FutureTask.get(FutureTask.java:111)

我写了一些代码来重试查询,如果它失败了:

 while(!querySuccess && queryAttempts<m_MaxQueryAttempts ){
             try{
                 queryAttempts++;
                 rsp = m_Server.query( query );
                 querySuccess = true;
             }catch(SolrServerException e){
                 querySuccess = false;
             }
         }

经过一次或多次重试后,查询通常会起作用。但有时即使重试100次也会失败。无论哪种方式,我想了解问题的原因是什么。为什么它在某些时候有效?是否存在并发访问solr的问题?除了这个过程,我只有一个其他进程,它使用单个连接不断写入索引。默认服务器设置低于 - 所以我认为这不是因为同时连接太多。

 INFO: Creating new http client, config:maxConnections=128&maxConnectionsPerHost=32&followRedirects=false 

对于如何诊断这一点的任何建议都将非常感激。

0 个答案:

没有答案