Hi Hrishikesh, I think SOLR-7344 is probably an important addition to Solr. It could help users isolate analytical queries ( streaming ) , search queries and indexing requests and throttle requests
Let's continue the discussion on the Jira On Thu, Aug 3, 2017 at 2:03 AM, Rick Leir <rl...@leirtech.com> wrote: > > > On 2017-08-02 11:33 PM, Shawn Heisey wrote: > >> On 8/2/2017 8:41 PM, S G wrote: >> >>> Problem is that peak load estimates are just estimates. >>> It would be nice to enforce them from Solr side such that if a rate >>> higher than that is seen at any core, the core will automatically begin to >>> reject the requests. >>> Such a feature would contribute to cluster stability while making sure >>> the customer gets an exception to remind them of a slower rate. >>> >> Solr doesn't have anything like this. This is primarily because there >> is no network server code in Solr. The networking is provided by the >> servlet container. The container in modern Solr versions is nearly >> guaranteed to be Jetty. As long as I have been using Solr, it has >> shipped with a Jetty container. >> >> https://wiki.apache.org/solr/WhyNoWar >> >> I have no idea whether Jetty is capable of the kind of rate limiting >> you're after. If it is, it would be up to you to figure out the >> configuration. >> >> You could always put a proxy server like haproxy in front of Solr. I'm >> pretty sure that haproxy is capable rejecting connections when the >> request rate gets too high. Other proxy servers (nginx, apache, F5 >> BigIP, solutions from Microsoft, Cisco, etc) are probably also capable >> of this. >> >> IMHO, intentionally causing connections to fail when a limit is exceeded >> would not be a very good idea. When the rate gets too high, the first >> thing that happens is all the requests slow down. The slowdown could be >> dramatic. As the rate continues to increase, some of the requests >> probably would begin to fail. >> >> What you're proposing would be guaranteed to cause requests to fail. >> Failing requests are even more likely than slow requests to result in >> users finding a new source for whatever service they are getting from >> your organization. >> > Shawn, > Agreed, a connection limit is not a good idea. But there is the > timeAllowed parameter <https://cwiki.apache.org/conf > luence/display/solr/Common+Query+Parameters#CommonQueryPa > rameters-ThetimeAllowedParameter> > timeAllowed - This parameter specifies the amount of time, in > milliseconds, allowed for a search to complete. If this time expires before > the search is complete, any partial results will be returned. > > https://stackoverflow.com/questions/19557476/timing-out-a-query-in-solr > > With timeAllowed, you need not estimate what connection rate is > unbearable. Rather, you would set a max response time. If some queries take > much longer than other queries, then this would cause the long ones to > fail, which might be a good strategy. However, if queries normally all take > about the same time, then this would cause all queries to return partial > results until the server recovers, which might be a bad strategy. In this > case, Walter's post is sensible. > > A previous thread suggested that timeAllowed could cause bad performance > on some cloud servers. > cheers -- Rick > > > > >