[
https://issues.apache.org/jira/browse/SSHD-417?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14337964#comment-14337964
]
Scott Goodhew commented on SSHD-417:
------------------------------------
Hi [~gnt]
Playing around with the code that Chris uploaded in testing-stash-7105.zip, and
YourKit i see lots of sessions objects. All are reachable, I included the code
you suggested to force GC and that changed nothing about the number of sessions
that were left over at the end.
All the objects that I see are reachable because they are in the {{sessions}}
map inside the {{Nio2Acceptor}} object, which is accessible from the SshServer
object.
!Screen Shot 2015-02-26 at 5.19.21 pm.png!
> Memory leak in IoServiceListenerSupport.managedSessions when clients cut
> connections quickly
> --------------------------------------------------------------------------------------------
>
> Key: SSHD-417
> URL: https://issues.apache.org/jira/browse/SSHD-417
> Project: MINA SSHD
> Issue Type: Bug
> Affects Versions: 0.13.0
> Reporter: Chris Szmajda
> Attachments: Screen Shot 2015-02-25 at 10.18.13 pm.png, Screen Shot
> 2015-02-25 at 10.18.36 pm.png, Screen Shot 2015-02-25 at 10.18.51 pm.png,
> Screen Shot 2015-02-25 at 10.19.04 pm.png, Screen Shot 2015-02-25 at 10.19.14
> pm.png, Screen Shot 2015-02-25 at 10.19.49 pm.png, Screen Shot 2015-02-26 at
> 5.19.21 pm.png, testing-stash-7105.zip
>
>
> Raised from https://jira.atlassian.com/browse/STASH-7105
> If you open and close a connection really fast it seems to hold onto lots of
> them in {{IoServiceListenerSupport}}
> In the wild this is sometimes caused by haproxy health checks.
> Can be reproduced running this python script
> {code}
> import socket
> import sys
> TCP_IP = '127.0.0.1'
> TCP_PORT = 7999
> def makeTestConnection():
> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> s.connect((TCP_IP, TCP_PORT))
> s.close()
> numConnections = 10000
> if len(sys.argv) == 2:
> numConnections = int(sys.argv[1])
> for i in range(numConnections):
> print(str(i))
> makeTestConnection()
> {code}
> If you take a heap dump afterwards you will see lots of session objects.
> There seems to be a 2 minute auth timeout that gets hit and some of the
> sessions are removed but the majority are not removed.
> Creating 10000 connections in seems to result in around 7000 of them hanging
> around.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)