Via this bug: https://issues.apache.org/jira/browse/SOLR-2631


> ... Solr can infinite loop, use 100% CPU and stack overflow, if you

> execute the following HTTP request:
>     - http://localhost:8983/solr/select?qt=/admin/ping
>     - http://localhost:8983/solr/admin/ping?qt=/admin/ping

I am running Solr 3.1, which has that bug.

Thanks,
Mike

On Wed, Sep 19, 2012 at 8:20 AM, Erik Hatcher <erik.hatc...@gmail.com>wrote:

> How are you triggering an infinite loop in your requests to Solr?
>
>         Erik
>
> On Sep 19, 2012, at 11:12 , Mike Gagnon wrote:
>
> > [ I am sorry for breaking the thread, but my inbox has neither received
> my
> > original post to the mailing list, nor Otis's response (so I can't reply
> to
> > his response) ]
> >
> > Thanks a bunch for your response Otis.  Let me more thoroughly explain my
> > experimental workload and why I am surprised Solr works so well.
> >
> > The most important characteristic of my workload is that many of the
> > requests (60 per second) cause infinite loops within Solr. That is, each
> of
> > those requests causes a separate infinite loop within it's request
> context.
> >
> > This workload is similar to an algorithmic-complexity attack --- a type
> of
> > DoS.  In every web-app stack I've tested (except Solr/Jetty and
> > Solr/Tomcat) such workloads cause an immediate and complete denial of
> > service. What happens for these vulnerable applications, is that the
> thread
> > pool fills up with infinite loops, and incoming requests become rejected.
> >
> > But Solr manages to survive such an attack. My best guess is that Solr
> has
> > an especially good overload strategy that quickly kicks out the infinite
> > loop requests -- which lowers CPU contention, and allows other requests
> to
> > be admitted.
> >
> > My first guess would be that Tomcat or Jetty is responsible for the good
> > response to overload. However,
> > there was a good discussion in 2008 on this mailing list about Solr
> > Security:
> >
> http://mail-archives.apache.org/mod_mbox/lucene-solr-user/200811.mbox/browser
> >
> > In this discuss Walter Underwood commented: "We have protected against
> > several different DoS problems in our front-end code."
> >
> > Perhaps it is these front-end defenses that help Solr survive my
> workloads?
> >
> > Thanks!
> > Mike Gagnon
> >
> >
> >> Hm, I'm not sure how to approach this. Solr is not alone here - there's
> >> container like jetty, solr inside it and lucene inside solr.
> >> Next, that index is reeeeally small, so there is no disk IO. The request
> >> rate is also not super high and if you did this over a fast connection
> > then
> >> there are also no issues with slow response writing or with having lots
> of
> >> concurrent connections or running out of threads ...
> >>
> >> ...so it's not really that surprising solr keeps working :)
> >>
> >> But...tell us more.
> >>
> >> Otis
> >> --
> >> Performance Monitoring - http://sematext.com/spm
> >>
> >>
> >>
> >> On Sep 12, 2012 8:51 PM, "Mike Gagnon" <mikegag...@gmail.com> wrote:
> >>
> >> 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