[ 
https://issues.apache.org/jira/browse/KAFKA-1043?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13771994#comment-13771994
 ] 

Neha Narkhede commented on KAFKA-1043:
--------------------------------------

As Sriram said, we no longer block on a full socket buffer. The problem is 
really large fetch requests, like those coming from a lagging mirror maker, 
hogging the network thread by writing as much as possible while the socket 
buffer is not full. This basically increases the response send time for all 
other requests whose responses are queued up behind this large fetch request. 
This causes a downward spiral that takes quite some time to recover due to the 
filled up response queues. 

We could cap based on size where we yield the network thread after n MBs are 
written on the wire, giving a chance for the rest of the smaller responses to 
get written on the socket. This will ensure a large or a few large fetch 
requests don't penalize several other smaller requests.
                
> Time-consuming FetchRequest could block other request in the response queue
> ---------------------------------------------------------------------------
>
>                 Key: KAFKA-1043
>                 URL: https://issues.apache.org/jira/browse/KAFKA-1043
>             Project: Kafka
>          Issue Type: Bug
>    Affects Versions: 0.8.1
>            Reporter: Guozhang Wang
>            Assignee: Guozhang Wang
>             Fix For: 0.8, 0.8.1
>
>
> Since in SocketServer the processor who takes any request is also responsible 
> for writing the response for that request, we make each processor owning its 
> own response queue. If a FetchRequest takes irregularly long time to write 
> the channel buffer it would block all other responses in the queue.

--
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