|
Home > Archive > WebSphere Application Server > March 2007 > Strange socket state prevents WAS restarting
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
Strange socket state prevents WAS restarting
|
|
|
| I am using Websphere application server 6.0 on Linux Suse SLES 8.
When I restart one of my application server I have error messages of this kind:
SystemOut.log:[11/14/06 14:15:15:626 CET] 0000000a TCPPort E TCPC0003E:
TCP Channel TCP_2 initialization failed. The socket bind failed for host * and
port 9080. The port may already be in use.
The server will take several minutes to be able to restart.
The probleme comes from the fact I have several TCP sockets in LAST_ACK
state :
$ netstat -an | grep 9080
tcp 0 10330 150.175.136.16:9080 150.175.212.100:59708 LAST_ACK
...
tcp 0 8870 150.175.136.16:9080 150.175.212.100:50780 LAST_ACK
Websphere will not be able to restart until the last socket in LAST_ACK state will disappear;this can take up to 11 minutes !
Does someone met such problem ?
Thank you.
| |
|
| For the one that will meet similar problems, some information that can help.
The origin of my problem was a component installed before the WebSphere server (Apache + CA SiteMinder 5 agent) that was removing the "if-modified-since" HTTP header. When Internet Explorer receives a 200 (OK) response instead of a 304 for a ressource he
already has in its cache, it simply close the connection.
The consequence is that there is a lot of TCP sockets closed but with data waiting to be sent. They stay in the LAST_ACK a long time before being closed.
Applications like Websphere usually manage this situation by setting a timeout on the close operation (the SO_LINGER parameter). By analysing the code of Websphere 6, i have discovered this can be done using a soLinger property. Unfortunately, this parame
ter is multiplyed by 1000 but the linger time for the java.net.Socket.setSoLinger method must be specifyed in seconds not in milliseconds !
| |
|
|
|
|
|