[ 
https://issues.apache.org/jira/browse/SOLR-12405?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16491874#comment-16491874
 ] 

Mark Miller commented on SOLR-12405:
------------------------------------

This is pretty sweet - a much more effective way of limiting resource usage 
than pool sizes and timeouts on queue waits.

Without using a an async model like continuations, any thread/connection pool 
limits end up being fairly nasty in our architecture, and distrib deadlock will 
be looking to bite you out of the blue when you cluster or traffic or feature 
use changes.

Async models are great for possibly scaling to more requests handled 
concurrently than your system can have threads, but under more forgiving 
traffic, the current model is going to be more efficient. Async models also 
push you towards a somewhat awkward request handling model. I think it would be 
interesting to offer it on our update and search paths if we can do it without 
too much craziness, but with something like full text search, I'm not even sure 
how much of a scalability win it could really be.

So that means we want to continue offering our current efficient model, but we 
can't reasonably limit OS resources in a nice way. We can limit external 
requests efficiently though, which is a great way to control a lot of resource 
usage at a single, easy to reason point.

Adjusting the max concurrent external requests based on system load and 
throttling for updatelog request recovery are what I'd like to look at next 
with this.

> Add a quality of service type filter for request load management and request 
> throttling.
> ----------------------------------------------------------------------------------------
>
>                 Key: SOLR-12405
>                 URL: https://issues.apache.org/jira/browse/SOLR-12405
>             Project: Solr
>          Issue Type: New Feature
>      Security Level: Public(Default Security Level. Issues are Public) 
>            Reporter: Mark Miller
>            Priority: Major
>
> Trying to manage resource usage just with thread / connection pool limits is 
> a losing strategy ( especially without using Continuations and making 
> scalability vs performance tradeoffs) if you cannot manage requests.
> A QOSFilter type servlet filter with give us some base functionality we want:
> Ability to limit number of concurrent requests.
> Ability to queue requests without holding a thread per request.
> Ability to drop requests over a certain queue size.
> Ability to prioritize requests on the queue.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to