[ 
https://issues.apache.org/jira/browse/HADOOP-2910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Doug Cutting updated HADOOP-2910:
---------------------------------

    Attachment: TestBacklog.java

Here's a slightly modified version.  I can get around the thread limit by 
specifying '-Xss48k' and '-Xms128M'.  I also introduced a 5ms pause in the 
loop, to give the threads more of a fighting chance.  It still fails around 
16-24k connections, but now with "Connection refused" for the most recent 
connection attempts.  So I changed it to only make 15k connections, then sleep. 
 Now the connect attempts timeout after around four minutes.

To me this indicates that the backlog is effective up to around 16k 
connections, but that connections queued this way will timeout after four 
minutes.

I also tried Windows and also found that it failed after a few hundred 
connections and could find no way to tweak OS settings to improve this.

> 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.18.0
>
>         Attachments: callQueue.patch, callQueue1.patch, callQueue2.patch, 
> callQueue3.patch, TestBacklog.java, TestBacklog.java, 
> TestBacklogWithPool.java, throttleClient.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.

Reply via email to