SSLSocket holds selectors, keys, preventing quick cleanup of resources when
dereferenced
----------------------------------------------------------------------------------------
Key: JRUBY-5018
URL: http://jira.codehaus.org/browse/JRUBY-5018
Project: JRuby
Issue Type: Bug
Affects Versions: JRuby-OSSL 0.7.1
Reporter: Charles Oliver Nutter
Assignee: Thomas E Enebo
SSLSocket currently opens three selectors immediately on creation, registering
selection keys with each right away. This was probably done to avoid
reconstructing the selectors for each read operation. This is unfortunately
rather inefficient; the three selectors each consume three file descriptors,
and because they all register selection keys immediately they don't get
collected until the sun.nio.ch.SocketChannelImpl they're associated with gets
finalized. Under heavy load, with many sockets created and thrown away, this
can quickly eat up all available file descriptors for a process.
I'm working on a fix at the moment; I will simply accept the hit of doing a
Selector.open each time a selection operation is required, which will reduce
the amount of descriptors left hanging by 90%. The remaining descriptor (that
for the socket itself) will eventually get collected.
I'll also look into whether we can forcibly clean up the socket in case of a
dropped connection.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email