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

ASF GitHub Bot commented on KAFKA-2614:
---------------------------------------

GitHub user ijuma opened a pull request:

    https://github.com/apache/kafka/pull/288

    KAFKA-2614; No more clients can connect after `TooManyConnectionsException` 
threshold (max.connections.per.ip) is reached

    * Call `ConnectionQuotas.decr` when calling `Selector.close` and when 
disconnections happen.
    * Expand `SocketServerTest` to test for this and to close sockets.
    * Refactor and clean-up `SocketServer` and `Acceptor` to make the code 
easier to understand.
    


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/ijuma/kafka 
kafka-2614-connection-count-not-updated

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/kafka/pull/288.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #288
    
----
commit 1f0786e22e23858a6e76cd40c570ffbbd91fc349
Author: Ismael Juma <ism...@juma.me.uk>
Date:   2015-10-08T15:38:24Z

    Call `ConnectionQuotas.decr` when calling `Selector.close` and when 
disconnections happen
    
    Also:
    * Expand `SocketServerTest` to test for this and to close sockets.
    * Refactor and clean-up `SocketServer` and `Acceptor` to make the code 
easier to understand.

----


> No more clients can connect after `TooManyConnectionsException` threshold 
> (max.connections.per.ip) is reached
> -------------------------------------------------------------------------------------------------------------
>
>                 Key: KAFKA-2614
>                 URL: https://issues.apache.org/jira/browse/KAFKA-2614
>             Project: Kafka
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 0.8.2.1
>         Environment: Debian Jessie
>            Reporter: Stephen Chu
>            Assignee: Ismael Juma
>            Priority: Critical
>             Fix For: 0.9.0.0
>
>
> It seems no more clients can connect to Kafka after `max.connections.per.ip` 
> is reached, even if previous clients were already disconnected.
> Using 0.8.3 (9c936b18), upon starting a fresh Kafka server that is configured 
> with (max.connections.per.ip = 24), I noticed that I can cause the server to 
> hit the error case of {{INFO Rejected connection from /0:0:0:0:0:0:0:1, 
> address already has the configured maximum of 24 connections.}} very quickly, 
> by simply looping through a bunch of simple clients against the server:
> {noformat}
> #! /bin/bash
> for i in {1..30}; do
>     # either:
>     nc -vz 127.0.0.1 9092;
>     # or:
>     ( telnet 127.0.0.1 9092; ) &
> done
> # if using telnet, kill all connected jobs now via:
> kill %{2..31}
> {noformat}
> The problem seems to be that the counter for such short-lived client 
> connections aren't properly decrementing when using the 
> `max.connections.per.ip` feature.
> Turning on DEBUG logs, I cannot see the log lines "Closing connection from 
> xxx" on [this 
> line|https://github.com/apache/kafka/blob/0.8.2/core/src/main/scala/kafka/network/SocketServer.scala#L164]
>  from the first few still-under-threshold short-lived connections, but starts 
> showing *after* I hit the limit per that config.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to