For 8-CPU load-stress testing of Tomcat you are probably making mistake: - you should execute load-stress software and wait 5-30 minutes (depends on index size) BEFORE taking measurements.
1. JVM HotSpot need to compile everything into native code 2. Tomcat Thread Pool needs warm up 3. SOLR caches need warm up(!) And etc. 8 parallel requests are too small for default Tomcat; it uses 150 threads (default for old versions), and new Concurrent package from Java 5 You should not test manually; use software such as The Grinder etc., also note please: there is difference between mean time and response time, between average (successful) requests per second and average response time... > Tomcat is serializing the requests - doesn't mean anything for performance... yes, it has dedicated Listener on dedicated port dispatching requests to worker threads... and LAN NIC card serializes everything too... Fuad Efendi http://www.linkedin.com/in/liferay > -----Original Message----- > From: Michael [mailto:solrco...@gmail.com] > Sent: September-22-09 4:04 PM > To: solr-user@lucene.apache.org > Subject: Parallel requests to Tomcat > > Hi, > I have a Solr+Tomcat installation on an 8 CPU Linux box, and I just tried > sending parallel requests to it and measuring response time. I would expect > that it could handle up to 8 parallel requests without significant slowdown > of any individual request. > > Instead, I found that Tomcat is serializing the requests. > > For example, the response time for each of 2 parallel requests is nearly 2 > times that for a single request, and the time for each of 8 parallel > requests is about 4 times that of a single request. > > I am pretty sure this is a Tomcat issue, for when I started 8 identical > instances of Solr+Tomcat on the machine (on 8 different ports), I could send > one request to each in parallel with only a 20% slowdown (compared to 300% > in a single Tomcat.) > > I'm using the stock Tomcat download with minimal configuration changes, > except that I disabled all logging (in case the logger was blocking for each > request, serializing them.) I'm giving 2G RAM to each JVM. > > Does anyone more familiar with Tomcat know what's wrong? I can't imagine > that Tomcat really can't handle parallel requests.