Stephen Chu created KAFKA-2614:
----------------------------------

             Summary: 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
    Affects Versions: 0.8.2.1
         Environment: Debian Jessie
            Reporter: Stephen Chu
            Priority: Critical


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