Hi, I print all attributes of a bug session as follow, Mina processes the last request at 2015-05-11 01:58:34, then stucked and no request is processed afterwards.
namevalue getWrittenBytesThroughput0.0 getLastIoTime2015-05-11 02:23:11 getReadBytes5971 getReadBytesThroughput0.0 isConnectedtrue getLastWriterIdleTime2015-05-11 01:58:34 isWriterIdlefalse getReaderIdleCount0 getLocalAddress/xx.xx.xx.xx:xxxx getWriterIdleCount0 getWrittenMessagesThroughput0.0 ID3233 getServiceAddress/0.0.0.0:xxxxx getReadMessages30 getLastReadTime2015-05-11 02:08:48 isSecuredfalse isReaderIdlefalse getLastReaderIdleTime2015-05-11 01:58:34 getWrittenBytes2221 getRemoteAddress/xx.xx.xx.xx:xxxxx getReadMessagesThroughput0.0 isBothIdlefalse isReadSuspendedfalse getScheduledWriteMessages-39 getLastWriteTime2015-05-11 02:23:11 getCreationTime2015-05-11 01:58:34 getBothIdleCount0 getLastBothIdleTime2015-05-11 01:58:34 isWriteSuspendedfalse isClosingfalse getWrittenMessages39 ------------------ Original ------------------ From: "白玉雄"<[email protected]>; Date: Wed, May 6, 2015 02:47 PM To: "users"<[email protected]>; Subject: Re: How to debug ghost sessions I am sure that idle event is fired. After no heartbeat for 900 seconds , session was closed by server. ------------------ Original ------------------ From: "Emmanuel Lécharny"<[email protected]>; Date: Wed, May 6, 2015 02:31 PM To: "users"<[email protected]>; Subject: Re: How to debug ghost sessions Le 06/05/15 05:24, 白玉雄 a écrit : > Hi all, > My mina server neither process session request nor disconnect the session as > idle. and this happens only on few of sessions, most of them works well. > > > Some Code: > public void run(int port) throws IOException { > this.acceptor = new NioSocketAcceptor(); > this.acceptor.setReuseAddress(true); > > > this.acceptor.getFilterChain().addLast("codec",new > ProtocolCodecFilter(new ClwMessageProtocolCodecFactory())); > > > this.acceptor.getFilterChain().addLast("logger", new > LoggingFilter()); > this.acceptor.getFilterChain().addLast("threadPool", new > ExecutorFilter(new > UnorderedThreadPoolExecutor(PropertiesHander.getInt("MAXIMUM_POOL_SIZE", > 16)))); > > > this.acceptor.getSessionConfig().setReadBufferSize(512); > this.acceptor.getSessionConfig().setReceiveBufferSize(512); > // set idle time, default 900 seconds > > this.acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE,PropertiesHander.getInt("SESSION_IDLE_TIME",900)); > this.acceptor.setHandler(ioHandler); > this.acceptor.bind(new InetSocketAddress(port)); > LOGGER.info("Socket server Listening on port "+ > PropertiesHander.getInt("SERVER_PORT", port)); > } > > > > Some phenomenons: > 1、The ghost session can be found by > this.acceptor.getManagedSessions().get(sessionId) > 2、If force the client disconnect from server and reconnect again, the client > now works well and request was processed normally. > > It seems that the session was stucked. > > > Question: > Why this happens No idea... You aren't providing enough information to know what's going on. > and How to reappear and debug this? Setting the idle time is good, but at some point you must check the event that is fired when teh session has been idle for 900 seconds. Are you doing that ?
