[ https://issues.apache.org/jira/browse/HADOOP-2910?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12579964#action_12579964
]
Doug Cutting commented on HADOOP-2910:
--------------------------------------
Waiting while the call queue is full before calling select sounds good. That will block both
new connections and new input on existing connections.
> Our goal is to slow down clients not to fail clients.
Yes, but at some point we need to backup load onto the clients. We can't queue everything
at the server. So if, when the call queue is full we start timing out clients that are connecting,
then we can increase the server sockets backlog and/or increase/remove the connect timeout
on the client.
> Throttle IPC Client/Server during bursts of requests or server slowdown
> -----------------------------------------------------------------------
>
> Key: HADOOP-2910
> URL: https://issues.apache.org/jira/browse/HADOOP-2910
> Project: Hadoop Core
> Issue Type: Improvement
> Components: ipc
> Affects Versions: 0.16.0
> Reporter: Hairong Kuang
> Assignee: Hairong Kuang
> Fix For: 0.17.0
>
> Attachments: callQueue.patch
>
>
> I propose the following to avoid an IPC server being swarmed by too many requests and
connections
> 1. Limit call queue length or limit the amount of memory used in the call queue. This
can be done by including the size of a request in the header and storing unmarshaled requests
in the call queue.
> 2. If the call queue is full or queue buffer is full, stop reading requests from sockets.
So requests stay at the server's system buffer or at the client side and thus eventually throttle
the client.
> 3. Limit the total number of connections. Do not accept new connections if the connection
limit is exceeded. (Note: this solution is unfair to new connections.)
> 4. If receive out of memory exception, close the current connection.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.