Hi Jeff,

On Nov 26, 2007 7:38 PM, Jeff Mesnil <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I'm using MINA trunk in an application and I've encountered an issue
> with it in our test suite.
>
> Basically, for each test, our test suite starts & stops a MINA server.
> Then depending on the tests, it opens connections or not.
>
> However, even when our tests do not open connection (i.e. only MINA
> acceptor is created), an excessive(?) number of pipes is created by MINA
> leading to a "too many open files" exception after a certain number of
> tests.
>
> All the first tests run by our test suite does not use MINA connectors.
> I commented out the code to start & stop MINA acceptor to see if it was
> the cause of the number of pipes and it seems it is.
>
> * without MINA start & stop:
>
> $ lsof -p $PID | grep pipe | wc -l
> 3
>
> * with MINA start & stop:
>
> $ lsof -p $PID | grep pipe | wc -l
> 203
> ...
> 987 -> generate an exception "too many open files"
>
>
> First question: is it normal that a succession of MINA acceptors
> creation/disposal generates such a number of pipe?
>
> The code I use to start & stop MINA is:
>
>     private void startMINAServer() throws Exception
>     {
>        if (acceptor == null)
>        {
>           acceptor = new NioSocketAcceptor();
>
>           // Prepare the configuration
>           acceptor.getFilterChain().addLast("mdc", new
> MdcInjectionFilter());
>           acceptor.getFilterChain().addLast("codec",
>                 new ProtocolCodecFilter(new PacketCodecFactory()));
>           acceptor.getFilterChain().addLast("logger", new LoggingFilter());
>
>           // Bind
>           acceptor.setLocalAddress(new InetSocketAddress(PORT));
>           acceptor.setReuseAddress(true);
>           acceptor.getSessionConfig().setReuseAddress(true);
>           acceptor.getSessionConfig().setKeepAlive(true);
>           acceptor.setDisconnectOnUnbind(false);
>
>           acceptor.setHandler(new ServerHandler());
>           acceptor.bind();
>
>           info("Started MINA on port " + PORT);
>        }
>     }
>
>     private void stopMINAServer()
>     {
>        if (acceptor != null)
>        {
>           acceptor.unbind();
>           acceptor.dispose();
>
>           info("Stopped MINA ");
>        }
>     }
>
> I thought at first that I was responsible of the increase of pipes by
> having unclosed streams. I don't think it is the case: I only used
> ByteArray streams in the codecs.
>
> It also seems that for each start of MINA, the increase is by 8 open
> pipes every time and it does not decrease every time the acceptor is
> disposed.
>
> I'm still investigating and trying to isolate this problem but I was
> wondering if it rings anyone's bell.
> Do you have any idea of the cause of all these open pipes?

It seems like you turned off disconnectOnUnbind flag.  Are you sure
you closed all connections after unbind?

Trustin
-- 
what we call human nature is actually human habit
--
http://gleamynode.net/
--
PGP Key ID: 0x0255ECA6

Reply via email to