Am Mittwoch, 28. September 2011 um 16:40 schrieb Toke Eskildsen:

> On Wed, 2011-09-28 at 12:58 +0200, Frederik Kraus wrote:
> > - 10 shards per server (needed for response times) running in a single 
> > tomcat instance
> 
> Have you tested that sharding actually decreases response times in your
> case? I see the idea in decreasing response times with sharding at the
> cost of decreasing throughput, but the added overhead of merging is
> non-trivial.
Yep unfortunately, the queries have huge boolean filterqueries for ACLs etc. 
which just take too long to compute in a single thread.

> 
> > - each query queries all 20 shards (distributed search)
> > 
> > - each shard holds about 1.5 mio documents (small shards are needed due to 
> > rather complex queries)
> > - all caches are warmed / high cache hit rates (99%) etc.
> 
> > Now for some reason we cannot seem to fully utilize all CPU power (no disk 
> > IO), ie. increasing concurrent users doesn't increase CPU-Load at a point, 
> > decreases throughput and increases the response times of the individual 
> > queries.
> 
> It sounds as if there's a hard limit on the number of concurrent users
> somewhere. I am no expert in httpclient, but the blocked threads in your
> thread dump seems to indicate that they wait for connections to be
> established rather than for results to be produced.
> 
> I seem to remember that tomcat has a default limit on 200 concurrent
> connections and with 10 shards/search, that is just 200 / (10
> shard_connections + 1 incoming_connection) = 18 concurrent searches.
> 

I have gradually bumped all of this up to (almost) infinity with no effect ;)


> > Also 1-2% of the queries take significantly longer: avg somewhere at 100ms 
> > while 1-2% take 1.5s or longer. 
> 
> Could be garbage collection, especially since it shows under high load
> which might result in more old objects and thereby trigger full gc.
 GC is only spending something like 50-100ms total for a 10min load test 



Reply via email to