We have a non clustered single (8.x) Solr server setup and use SolrJ to connect 
our tomcat to the Solr server. Under high load (e.g. last black friday) we face 
a bottleneck due to our webapp-search-requests. Calls to solr take seconds, 
dangling http-connecitons, ...
Firing the same ( or even way more ) search requests directly onto our Solr 
server showed, as expected, no problem. Therefore my implication is that 
SolrJ/HttpSolrClient/HttpClient is not setup as expected.
Our search API is setup alike:

private final Map<String, SolrClient> coreConnections; // one SolrClient per 
core
...

// create a new SolrClient for a core if not existant
HttpSolrClient.Builder builder = new HttpSolrClient.Builder( coreUrl );
solrClient = builder.build();
coreConnections.put( key, solrClient );

As you can see 
* we keep one SolrClient-connection per core in a map and make use of these 
connections
* making use of HttpSolrClient ( Http2SolrClient is denoted "experimental" and 
has cause some problem )
* no special tweaking of underneath HttpClient

Any reason for this minimal setup not being able to stem many many concurrent 
requests? What is the proposed SolrJ based solr client setup (for a single Solr 
server)?

Thx
- Clemens

Reply via email to