IBM Support

DCS Port Not Immediately Available on JVM Restarts

Troubleshooting


Problem

Users may experience a long wait period for the Linux operating system to release the TCP ports after restarting a WebSphere Application Server, in any of the following scenarios: * Starting the server immediately after stopping the Java process * Restarting the server * Restarting the server in debug mode

Symptom

JVM restarts are delayed with ~60 seconds worth of messages implicating the DCS port:

TCPC0003E: TCP Channel TCP_1 initialization failed. The socket bind failed for host * and port 9354. The port may already be in use.

Cause

The operating system can take more than three minutes to release the port. As soon as the JVM receives the stop signal, information is passed to the operating system to destroy all the listening ports. The operating system is responsible to clean up the ports that are in use.

Environment

This problem may occur on Red Hat Enterprise Linux Server Release 5.9 with WebSphere Application Server versions 6.1.0.45 - 8.5.5.0

Diagnosing The Problem

The following message might appear in the SystemOut.log file when the startServer command is issued immediately after stopping the server process:

TCPC0003E: TCP Channel TCP_1 initialization failed. The socket bind failed for host * and port 9354. The port may already be in use.

Once the port is released by the operating system, WebSphere Application Server can bind to the port. You might see the following message after a few minutes:

TCPChannel A TCPC0001I: TCP Channel TCP_1 is listening on * port 9354.

Resolving The Problem

Use the TCP Channel custom property soReuseAddr to control bind behavior. This custom property helps to avoid repeated bind error messages during the bind process. When soReuseAddr is set to 1, the TCP channel is forced to try each bind attempt with the re-use option set to true on the socket, thus, avoiding the TCPC0003E error message.

To configure soReuseAddr on a given port using the administrative console, start from the corresponding "View associated transports" link and look for "TCP inbound channel". If you prefer to use admin scripting, write a script that locates all configuration objects of type TCPInboundChannel and adds the soReuseAddr property to these objects.

In v8.5.5.1 and later, we automatically set the soReuseAddr property on the socket to 1.

NOTE: This issue was also found in the Liberty Profile, but will be fixed with PI14458.

[{"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":"High Availability (HA)","Platform":[{"code":"PF016","label":"Linux"}],"Version":"8.5.5;8.5;8.0;7.0;6.1.0.45","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
15 June 2018

UID

swg21645658