You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Varun Thacker (JIRA)" <ji...@apache.org> on 2018/06/02 21:07:00 UTC

[jira] [Commented] (SOLR-12405) Add a quality of service type filter for request load management and request throttling.

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

Varun Thacker commented on SOLR-12405:
--------------------------------------

Just to experiment a little to understand how this works better. So I changed the qos filter to be
{code:java}
@Override
public void init(FilterConfig filterConfig) {
  super.init(filterConfig);
  _origMaxRequests = 0;
  super.setMaxRequests(_origMaxRequests);
  super.setSuspendMs(60000);
  super.setWaitMs(50);
}

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
    throws IOException, ServletException {
  HttpServletRequest req = (HttpServletRequest) request;
  String source = req.getHeader(QoSParams.REQUEST_SOURCE);
  if (req.getServletPath() != null && req.getServletPath().contains("/update")) {
    log.info("Blocking update");
    super.doFilter(req, response, chain);
  } else {
    chain.doFilter(req, response);
  }
}{code}
Never does an update get processed as expected. At the 1 minute mark the client would get back a 503 
{code:java}
[master] ~/apache-work/lucene-solr/solr$ time curl http://127.0.0.1:8983/solr/techproducts/update?commit=true -H 'Content-type:application/json' -d '

[

{"id" : "1"}

]'

<html>

<head>

<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>

<title>Error 503 Service Unavailable</title>

</head>

<body><h2>HTTP ERROR 503</h2>

<p>Problem accessing /solr/techproducts/update. Reason:

<pre>    Service Unavailable</pre></p>

</body>

</html>


real	1m0.130s

user	0m0.007s

sys	0m0.007s{code}
 

> 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
>         Attachments: SOLR-12405.patch
>
>
> 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: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org