There is a property in opennms.properties that allows you to set the max number of async connections it can do..
Have you tried setting that? org.opennms.netmgt.provision.maxConcurrentConnector Matt On Wed, Jul 6, 2011 at 8:20 AM, Duncan Mackintosh <dmackint...@cbnl.com> wrote: > I've been doing a lot of digging around various 'Too many open files' crashes > we've been seeing locally, and I think I've pinned down a big leak of file > descriptors in provisiond's use of org.apache.mina connectors. > > What it's currently doing in AsyncBasicDetector#isServiceDetected: > - For each service, create a new NioSocketConnector > - Configure that connector with a handler, filters etc > - Make a connection out, check for results etc > > There seem to be two problems with this approach: > > 1) Constructing an NioSocketConnector creates a lot of 'anon_inode' and > 'pipe' file descriptors - on one machine it was 8 & 12 respectiovely and on > another 4/8, so I'm not sure quite what the difference is there (under linux, > at least; I assume some equivalent under Windows). The actual connect() call > only uses one more handle. This causes it to run out of descriptors a lot > faster than expected. > > 2) If new NioSocketConnector() crashes due to a "Too many open files" > exception, Mina sometimes just sort of falls over dead with > "NoClassDefFoundError: Could not initialize class sun.nio.ch.FileDispatcher". > This class does exist in my JVM (openjdk 6) and if I reflectively inspect it > first, it sometimes stops the crashes happening. I'm pretty baffled there, to > be honest. If it does get itself into this state, you can't close existing > sockets, you can't open new ones; all the anon_inode and pipe FDs just sit > there. This seems to tally with behaviour we've witnessed in opennms > instances where we've had a Too many open files crash - lsof shows a few > thousand pipe/anon_inode handles just sitting around long after the crash. > > For reference, I've attached a simple test class that just opens ~60 > connections using the current methodology. If you lsof the process while it > pauses, you can see how many new file descriptors are being created each > time; if you drop the 60 down to 50 it cleans up gracefully but at 60 it > doesn't seem possible to free the descriptors again (you'll need mina-core > and slf4j-log4j12 in a project to run it). I'd be quite interested to see if > others get the same behaviour I do. > > What I think Mina wants you to be doing is creating a single > NioSocketConnector to reuse everywhere and using the optional > IoSessionInitializer in .connect() to configure filters and attach state > objects to the IoSession. This would take a moderate overhaul of > AsyncBasicDetector, as the handler would need to be rewritten to be a > singleton that takes some state using IoSession.get/setAttribute rather than > having one handler per service detect attempt and probably a fair chunk of > refactoring at the same time. > > Before I embark on making those changes I wanted to throw this out there for > comment, and to see if there's already a refactor of this code planned (I > couldn't see any changes on the provisiond-refactor branch yet). > > Thanks, > Duncan Mackintosh (dijm) > Cambridge Broadband Networks Limited Registered in England and Wales under > company number: 03879840 Registered office: Selwyn House, Cambridge Business > Park, Cowley Road, Cambridge CB4 0WZ, UK. VAT number: GB 741 0186 64 > > ------------------------------------------------------------------------------ > All of the data generated in your IT infrastructure is seriously valuable. > Why? It contains a definitive record of application performance, security > threats, fraudulent activity, and more. Splunk takes this data and makes > sense of it. IT sense. And common sense. > http://p.sf.net/sfu/splunk-d2d-c2 > _______________________________________________ > Please read the OpenNMS Mailing List FAQ: > http://www.opennms.org/index.php/Mailing_List_FAQ > > opennms-devel mailing list > > To *unsubscribe* or change your subscription options, see the bottom of this > page: > https://lists.sourceforge.net/lists/listinfo/opennms-devel > ------------------------------------------------------------------------------ All of the data generated in your IT infrastructure is seriously valuable. Why? It contains a definitive record of application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-d2d-c2 _______________________________________________ Please read the OpenNMS Mailing List FAQ: http://www.opennms.org/index.php/Mailing_List_FAQ opennms-devel mailing list To *unsubscribe* or change your subscription options, see the bottom of this page: https://lists.sourceforge.net/lists/listinfo/opennms-devel