[
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: [email protected]
For additional commands, e-mail: [email protected]