TCP/IP performance for Siebel – EVT Check

I was troubleshooting some connectivity and the well known  ‘Server you are trying to access is either busy or experiencing difficulties’ issues. I thought running the EVT (environment verification tool) could give some hints, so ran it and got the below results which I didn’t really expect.

Total Checks : 7
Checks Passed : 2
Checks Failed : 5 (4 critical failures, 1 warnings)
Checks Skipped: 0

Critical Failures:
Network Configuration Checks
Please set TCP parameter TcpTimedWaitDelay to 30 – the current value is not defined
Please set TCP parameter MaxUserPort to 65534 – the current value is not defined
Please set TCP parameter MaxFreeTcbs to 10000 – the current value is not defined
Please set TCP parameter MaxHashTableSize to 2048 – the current value is not defined

I was a bit surprised that we didn’t set the network configuration properly, as normally the Siebel Configuration Wizard sets the TCP/IP registry values as follows:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

TcpTimedWaitDelay = 30

MaxUserPort = 65534

MaxFreeTcbs = 10000

MaxHashTableSize = 2048

NOTE: The Configuration Wizard saves the original registry values in the registry file SIEBEL_ROOT\siebsrvr\admin\tcp_bak.reg

Siebel architecture uses TCP/IP ports to connect to the Siebel application servers. These connections remain open in the TIME_WAIT state until the operating system times them out. Consequently, under heavy load conditions, the available ports on the machine running the Routing module can be exhausted. On Windows platforms, the default timeout is 120 seconds, and the maximum number of ports is approximately 4,000, resulting in a maximum rate of 33 connections per second

If you are not sure what are these TCP/IP parameters, then below are some information:

 

TcpTimedWaitDelay

TcpTimedWaitDelay determines the time that must elapse before TCP can release a closed connection and reuse its resources. This interval between closure and release is known as the TIME_WAIT state or 2MSL state. During this time, the connection can be reopened at much less cost to the client and server than establishing a new connection.

RFC 793 requires that TCP maintains a closed connection for an interval at least equal to twice the maximum segment lifetime (2MSL) of the network. When a connection is released, its socket pair and TCP control block (TCB) can be used to support another connection. By default, the MSL is defined to be 120 seconds, and the value of this entry is equal to two MSLs, or 4 minutes. However, you can use this entry to customize the interval.

Reducing the value of this entry allows TCP to release closed connections faster, providing more resources for new connections. However, if the value is too low, TCP might release connection resources before the connection is complete, requiring the server to use additional resources to reestablish the connection.

 

Data type Range Default value
REG_DWORD 0x1E 0x12C ( 30–300 seconds ) 0xF0 ( 240 seconds = 4 minutes )

 

Reg location : HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

 

MaxUserPort

MaxUserPort determines the highest port number TCP can assign when an application requests an available user port from the system. Typically, ephemeral ports (those used briefly) are allocated to port numbers 1024 through 5000.

 

Data type Range Default value
REG_DWORD 0x1E 0x12C ( 30–300 seconds ) 0xF0 ( 240 seconds = 4 minutes )

 

Reg location: HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

 

TcpMaxDataRetransmissions

TcpMaxDataRetransmissions determines how many times TCP retransmits an unacknowledged data segment on an existing connection. TCP retransmits data segments until they are acknowledged or until this value expires.

TCP/IP adjusts the frequency of retransmissions over time. TCP establishes an initial retransmission interval by measuring the round trip time on the connection. The interval doubles with each successive retransmission on a connection, and it is reset to the initial value when responses resume.

 

Data type Range Default value
REG_DWORD 0x0–0xFFFFFFFF ( retransmission attempts ) 0x5

 

Reg location : HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

 

TcpNumConnections

TcpNumConnections determines the maximum number of connections that TCP can have open simultaneously. If the value of this entry is 0, you cannot establish any connections.

Data type Range Default value
REG_DWORD 0x0–0xFFFFFE 0

 

Reg location: HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

 

TCP/IP Tuning

netsh int tcp set global autotuninglevel=disabled