Amitanand Aiyer created HBASE-6747:
--------------------------------------

             Summary: Enable server side limit on the size of results returned.
                 Key: HBASE-6747
                 URL: https://issues.apache.org/jira/browse/HBASE-6747
             Project: HBase
          Issue Type: Improvement
            Reporter: Amitanand Aiyer
            Priority: Minor


We have seen a couple of situations where clients fetching a large row can 
cause the whole server to go down, due to large GC pauses/Out of memory error.

This should be easily avoidable, if the client can use a Scan instead of a Get, 
and/or use batching to reduce the size. But, it seems difficult to enforce 
this. Moreover,
once in a while, there may be genuine outliers/bad clients, that cause such 
large requests.

We need to handle such situations gracefully, and not have the RS reboot for 
things that can be prevented. The proposal here is to enforce a maximum 
response size
at the Server end, so we are not at the mercy of the client's good behavior to 
let the server running.

We already log large responses. But, if the response is too large, it just 
kills the server. We don't have it logged, and the only way to find out is to 
go through the heap dump.
More importantly, our availability/reliability numbers will go down because the 
whole region/regionserver fails instead of just the single bad request.

I think it will be useful for the server to maintain a maximum request size 
that it will serve. Something large like 2-3G, so normal operations
do not need to be bothered. If a single get/scan operation exceeds the size, we 
will just throw an exception for the request. This will
a) avoid the RS from going on and on until it hits out of memory, and
b) will give a cleaner way for the clients, and for us to see what is the 
problem.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to