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