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 ?

Reply via email to