WebSphere Application Server - Strange socket state prevents WAS restarting

This is Interesting: Free IT Magazines  
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

2006-12-04, 1:20 pm

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.

2007-03-29, 1:27 pm

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 !
Ben_

2007-03-29, 1:27 pm

> 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.

Good that you found it, because it can cause nasty problems.
This behavior is considered a "feature"
(http://support.microsoft.com/kb/272933), but it's without causing problems
(http://support.microsoft.com/kb/922703).

Sponsored Links






Free braindumps | Software forum | Database administration forum

Copyright 2003 - 2008 webservertalk.com