Hi,

I have been studying how server software responds to requests that cause
CPU overloads (such as infinite loops).

In my experiments I have observed that Solr performs unusually well when
subjected to such loads. Every other piece of web software I've
experimented with drops to zero service under such loads. Do you know how
Solr achieves such good performance?

I am guessing that when Solr is overload sheds load to make room for
incoming requests, but I could not find any documentation that describes
Solr's overload strategy.

Experimental setup: I ran Solr 3.1 on a 12-core machine with 12 GB ram,
using it index and search about 10,000 pages on MediaWiki. I test both
Solr+Jetty and Solr+Tomcat. I submitted a variety of Solr queries at a rate
of 300 requests per second. At the same time, I submitted "overload
requests" at a rate of 60 requests per second. Each overload request caused
an infinite loop in Solr via https://issues.apache.org/jira/browse/SOLR-2631
 .

With Jetty about 70% of non-overload requests completed --- 95% of requests
completing within 0.6 seconds.
With Tomcat about 34% of non-overload requests completed --- 95% of
requests completing within 0.6 seconds.

I also ran Solr+Jetty with non-overload requests coming in 65 requests per
second (overload requests remain at 60 requests per second). In this
workload, the completion rate drops to 15% and the 95th percentile latency
increases to 25.

Cheers,
Mike Gagnon

Reply via email to