Re: Max http connections in CloudSolrServer

2013-04-22 Thread J Mohamed Zahoor

On 18-Apr-2013, at 9:43 PM, Shawn Heisey  wrote:

> Are you using the Jetty included with Solr, or a Jetty installed separately?  


I am using the Jetty that comes with Solr.


> The Jetty included with Solr has a maxThreads value of 1 in its config.  
> The default would be closer to 200, and a single request from a Cloud client 
> likely uses multiple Jetty threads.

The default maxThreads is 1 and minThreads is 10.


./zahoor

Re: Max http connections in CloudSolrServer

2013-04-18 Thread Shawn Heisey

On 4/18/2013 6:42 AM, J Mohamed Zahoor wrote:


I dont yet know if this is the reason...
I am looking if jetty has some limit on accepting connections..


Are you using the Jetty included with Solr, or a Jetty installed 
separately?  The Jetty included with Solr has a maxThreads value of 
1 in its config.  The default would be closer to 200, and a single 
request from a Cloud client likely uses multiple Jetty threads.


Thanks,
Shawn



Re: Max http connections in CloudSolrServer

2013-04-18 Thread J Mohamed Zahoor

I dont yet know if this is the reason...
I am looking if jetty has some limit on accepting connections.. 

./zahoor


On 18-Apr-2013, at 12:52 PM, J Mohamed Zahoor  wrote:

> 
> Thanks for this.
> The reason i asked this was.. when i fire 30 queries simultaneously from 30 
> threads using the same CloudSolrServer instance, 
> some queries gets fired after a delay.. sometime the delay is 30-50 seconds...
> 
> In solr logs i can see.. 20+ queries get fired almost immediately... but some 
> of them gets fired late..
> 
> i increased the connections per host from 32 to 200.. still no respite...
> 
> ./zahoor
> 
> On 18-Apr-2013, at 12:20 AM, Shawn Heisey  wrote:
> 
>> ModifiableSolrParams params = new ModifiableSolrParams();
>>  params.set(HttpClientUtil.PROP_MAX_CONNECTIONS, 1000);
>>  params.set(HttpClientUtil.PROP_MAX_CONNECTIONS_PER_HOST, 200);
>>  HttpClient client = HttpClientUtil.createClient(params);
>>  LBHttpSolrServer lbServer = new LBHttpSolrServer
>>(client, "http://localhost/solr";);
>>  lbServer.removeSolrServer("http://localhost/solr";);
>>  SolrServer server = new CloudSolrServer(zkHost, lbServer);
> 



Re: Max http connections in CloudSolrServer

2013-04-18 Thread J Mohamed Zahoor

Thanks for this.
The reason i asked this was.. when i fire 30 queries simultaneously from 30 
threads using the same CloudSolrServer instance, 
some queries gets fired after a delay.. sometime the delay is 30-50 seconds...

In solr logs i can see.. 20+ queries get fired almost immediately... but some 
of them gets fired late..

i increased the connections per host from 32 to 200.. still no respite...

./zahoor

On 18-Apr-2013, at 12:20 AM, Shawn Heisey  wrote:

> ModifiableSolrParams params = new ModifiableSolrParams();
>  params.set(HttpClientUtil.PROP_MAX_CONNECTIONS, 1000);
>  params.set(HttpClientUtil.PROP_MAX_CONNECTIONS_PER_HOST, 200);
>  HttpClient client = HttpClientUtil.createClient(params);
>  LBHttpSolrServer lbServer = new LBHttpSolrServer
>(client, "http://localhost/solr";);
>  lbServer.removeSolrServer("http://localhost/solr";);
>  SolrServer server = new CloudSolrServer(zkHost, lbServer);



Re: Max http connections in CloudSolrServer

2013-04-17 Thread Shawn Heisey

On 4/17/2013 3:21 PM, Chris Hostetter wrote:

I think the name comes from the effect it has on the underlying HttpClient
code ... it's possible to configure a HttpConnectionManager such that it
has different number of max connections per host -- ie: host1 has max
connections of 23, host2 has max connections of 45, etc  i believe
that method just changes the "default" when there isn't something
specifically set for an individual host..


That puts it into complete perspective, so changing the name is a bad 
idea.  I do think it might be a good idea to include HttpSolrServer's 
convenience methods in the other classes, even if there is a working 
HttpClient -> LBHttpSolrServer -> CloudSolrServer way to change things.


Thanks,
Shawn



Re: Max http connections in CloudSolrServer

2013-04-17 Thread Chris Hostetter

: Side issue: shouldn't that be setMaxConnectionsPerHost instead of including
: the word Default?  If there's no objection, I would plan on adding the renamed
: method and using a typical deprecation procedure for the old one.

I think the name comes from the effect it has on the underlying HttpClient 
code ... it's possible to configure a HttpConnectionManager such that it 
has different number of max connections per host -- ie: host1 has max 
connections of 23, host2 has max connections of 45, etc  i believe 
that method just changes the "default" when there isn't something 
specifically set for an individual host..


-Hoss


Re: Max http connections in CloudSolrServer

2013-04-17 Thread Shawn Heisey

On 4/17/2013 3:46 AM, J Mohamed Zahoor wrote:

Hi

I am pumping parallel select queries using CloudSolrServer.
It looks like it can handle only certain no of  max connections...

my Question is,
How many concurrent queries does a CloudSolrServer can handle?


Looking into the code for 4.x versions, I found that the default max 
number of connections is 128, and the default max number of connections 
per host is 32.  This is set in the HttpSolrServer constructor.



An old thread tries to answer this by asking to give our own instance of 
LBHttpSolrServer...
But it looks like there is no way from LBHttpSolrServer to up the maxConnection 
of the httpClient it has...

Can someone let me know how to bump up the maxConnections and 
maxConnectionsPerHost parameter for the httpCLient used by cloudSolrServer?


You should be able to create an instance of LBHttpSolrServer, which in 
turn lets you use a custom HttpClient, where you could set the 
connection limits. Then you could use the LBHttpSolrServer object to 
create an instance of CloudSolrServer.


The following code MIGHT work (probably in a try block), but I haven't 
tried to actually use it, so it might be horribly broken.


  ModifiableSolrParams params = new ModifiableSolrParams();
  params.set(HttpClientUtil.PROP_MAX_CONNECTIONS, 1000);
  params.set(HttpClientUtil.PROP_MAX_CONNECTIONS_PER_HOST, 200);
  HttpClient client = HttpClientUtil.createClient(params);
  LBHttpSolrServer lbServer = new LBHttpSolrServer
(client, "http://localhost/solr";);
  lbServer.removeSolrServer("http://localhost/solr";);
  SolrServer server = new CloudSolrServer(zkHost, lbServer);

I would argue that CloudSolrServer (and therefore LBHttpSolrServer) 
should have many of the setters available on HttpSolrServer, including 
setDefaultMaxConnectionsPerHost and setMaxTotalConnections.  Perhaps not 
all of them, some of them are things that most people would never really 
need, and some of them might not make sense for a clustered server object.


Side issue: shouldn't that be setMaxConnectionsPerHost instead of 
including the word Default?  If there's no objection, I would plan on 
adding the renamed method and using a typical deprecation procedure for 
the old one.


Thanks,
Shawn



Max http connections in CloudSolrServer

2013-04-17 Thread J Mohamed Zahoor
Hi

I am pumping parallel select queries using CloudSolrServer.
It looks like it can handle only certain no of  max connections...

my Question is,
How many concurrent queries does a CloudSolrServer can handle?


An old thread tries to answer this by asking to give our own instance of 
LBHttpSolrServer... 
But it looks like there is no way from LBHttpSolrServer to up the maxConnection 
of the httpClient it has...


Can someone let me know how to bump up the maxConnections and 
maxConnectionsPerHost parameter for the httpCLient used by cloudSolrServer?

./zahoor