Description
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.
Attachments
Attachments
Issue Links
- incorporates
-
HADOOP-3109 RPC should accepted connections even when rpc queue is full (ie undo part of HADOOP-2910)
- Closed
- is part of
-
HADOOP-2864 Improve the Scalability and Robustness of IPC
- Resolved