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