IBM Support

Understanding the BACKLOG parameter on the CICS TCPIPSERVICE definition

Question & Answer


Question

You are setting up a TCPIPSERVICE definition in CICS Transaction Server for z/OS (CICS TS), and need to understand the BACKLOG parameter. You want to know under what circumstances would a connection become queued? Would this only happen if multiple connections were started at the same time, and are single-threaded on the QR TCB?

Cause

The BACKLOG specifies, in the range 0 - 32767, the maximum number of inbound TCP/IP connection open requests that can be queued in TCP/IP waiting for CICS processing. When the maximum is reached, TCP/IP rejects additional requests. If the value of BACKLOG is greater than SOMAXCONN, the value of SOMAXCONN is used. For IPIC connections set this value to the maximum number of concurrent connection requests that can be established by using this TCPIPSERVICE. For CICS TS V4.2 and earlier releases if the value of BACKLOG is zero it disables incoming connection requests. For CICS TS V5.1 or later releases if the value of BACKLOG is zero, the value of TCP/IP attribute SOMAXCONN is used.

Answer

When a TCPIP connect request is received by the Listening TCPIPSERVICE, there must be a SOCKET ACCEPT issued to get the connection request from TCPIP. Following this, a child process must be started to handle the connection and the socket created for the connection must be transferred to the child so that the TCPIPSERVICE can go back to listening for new connections. During this time the TCPIPSERVICE is not available to ACCEPT new connection requests. So rather than reject a new connection request, TCPIP will queue it to wait for the TCPIPSERVICE to issue another ACCEPT.

Because it is always possible that the TCPIPSERVICE could have a problem, TCPIP does not continue to queue requests forever. It will queue requests up to the BACKLOG value and will reject any further connection request that arrives while the queue is full. Usually TCPIP requests do not arrive quickly enough to fill the BACKLOG, but if you start getting connection requests rejected you should consider increasing the BACKLOG value.

For CICS TS V5.3 or later releases, when performance tuning for HTTP connections is enabled, when CICS is at maximum capacity it pauses issuing SOCKET ACCEPTs until MXT is relieved. In this situation all new inbound HTTP connection requests will queue in the BACKLOG queue. Ensure the BACKLOG value is large enough, because when this queue is full, connection requests will be rejected. See the description of the BACKLOG parameter in the CICS TS V5.3 documentation for more information.

When connection balancing is in use, the BACKLOG queue's depth is included in the processing that determines the most suitable listener, so consider the BACKLOG attribute across all TCPIPSERVICEs on CICS regions that share a port.

For IPIC connections, set the BACKLOG to the maximum number of concurrent connection requests that can be established by using this TCPIPSERVICE. For other TCPIPSERVICEs the value of the TCPIP parameter SOMAXCONN can be used as a starting point. For CICS TS V5, setting the BACKLOG to 0 will use the SOMAXCONN. For CICS TS V4, you will need to set the BACKLOG to the same value as SOMAXCONN.

[{"Product":{"code":"SSGMGV","label":"CICS Transaction Server"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Component":"TCPIP","Platform":[{"code":"PF035","label":"z\/OS"}],"Version":"4.1;4.2;5.1;5.2;5.3","Edition":"","Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]

Product Synonym

CICS/TS CICS TS CICS Transaction Server

Document Information

Modified date:
15 June 2018

UID

swg21394849