Hi Shawn,
It looks like you probably have pointed to the root cause of the issue.
I am using a java client and using HttpClient library directly to fire the
Http get queries. I am not using SolrJ client for firing the queries.

The following is my code

CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(url);
        CloseableHttpResponse response = null;
        try {
   response = httpclient.execute(httpGet);
            } finally {

            }

Is a route per httpHost/port combination?

I will try to set the MaxConnPerRoute and maxTotalConn to a larger value
and see if that gives me some benefit.


Thanks
Suresh









On 3/24/17 6:05 AM, "Shawn Heisey" <apa...@elyograg.org> wrote:

>On 3/23/2017 6:10 PM, Suresh Pendap wrote:
>> I performed the test with 1 thread, 10 client threads and 50 client
>> threads. I noticed that as I increased the number of threads, the
>> query latency kept increasing drastically which I was not expecting.
>
>What language and Solr library was the client using?  If it's Java and
>SolrJ, then the following will apply.  If the client is written in a
>language other than Java, you may find that there are similar default
>settings in the HTTP library:
>
>A dependency called HttpClient is used by SolrJ.  The default settings
>for HttpClient are only capable of making *two* simultaneous connections
>to a target server.  Further connections will wait until existing
>connections are complete.  Unless it is overridden, SolrJ creates the
>HttpClient object with default settings.
>
>If more threads are needed, the SolrClient object must be built with a
>custom HttpClient.  Here's some SolrJ code to create a
>multithread-capable client object (300 threads to a single server):
>
>  RequestConfig rc = RequestConfig.custom().setConnectTimeout(15000)
>      .setSocketTimeout(Const.SOCKET_TIMEOUT).build();
>  httpClient = HttpClients.custom().setDefaultRequestConfig(rc)
>     
>.setMaxConnPerRoute(300).setMaxConnTotal(5000).disableAutomaticRetries()
>      .build();
>  client = new HttpSolrClient(serverBaseUrl, httpClient);
>
>I have also placed this code at the following URL.  It will expire in
>one month:
>
>http://apaste.info/BpoWY
>
>A similar technique can be used with CloudSolrClient if needed.
>
>It's my opinion that SolrJ needs to create client objects by default
>that are capable of more threads, but I have not yet put any time into
>making it happen.
>
>Thanks,
>Shawn
>

Reply via email to