Channel Framework
Overview
TCP Channel executes I/O operations using either...
Channel Framework AIO Native library. Default since WebSphere 6.1. Scales better than our implementation of NIO, More connections at a faster speed. Except for Solaris, do not disable AIO. Channel Framework NIO TCP Channel's implementation of the JDK NIO. To change the default on Solaris from AIO to NIO in 7.0.0.7 and 6.1.0.29 forward, see PK88455 APAR.
Debugging
Before debugging, run: MustGather: Channel Framework problems in WebSphere Application Server
Trace string (Static trace):
*=info:HTTPChannel=all:TCPChannel=all:GenericBNF=all
TCPChannel trace must be taken statically i.e. with server restart: If not taken statically, TCPChannel will not capture “reads” For a production environment we can turn on this trace while server startup, and than turn off after startup. There will be minimal tracing going. Start this trace again dynamically during problem time.
For Plugin: MustGather: WebSphere Application Server HTTP plug-in problems
Review tools: iptrace, snoop, tcpdump, wireshark, and nettl
For wireshark: www.wireshark.org
Timeout issues
Four types of timeout...
- Read
- Write
- Persist
- Connect
I/O return codes...
- Async IO operation failed, reason: RC: 76 A socket must be already connected.
- Async IO operation failed, reason: RC: 64 The specified network name is no longer available.
In general they all mean the same thing: the other side closed the connection. The end result of any investigation will need to be why the other side of the connection closed it. Sometimes this can be a firewall.
Trace Analysis – IOException
- Find the exception:
[7/18/12 10:15:32:638 CDT] 0000011f servlet E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: Uncaught exception created in one of the service methods of the servlet TestSOAP in application test. Exception created : java.io.IOException: Async IO operation failed (1), reason: RC: 107 Transport endpoint is not connected This issue requires TCPChannel=all, set from the start of the server, and an IP Trace
- Follow the thread down to find the close of the socket where the IOException happened...
[7/18/12 10:15:33:145 CDT] 0000011f AioSocketIOCh 3
SocketChannel close starting, local:
abc.xyz/56.42.13.32:9288 remote:
xyz.abc/56.42.41.35:51422