Impact of new CICS Sockets Servers Timeout parameters

Document ID : KB000054902
Last Modified Date : 14/02/2018
Show Technical Document Details

Description:

This document will detail the timeout parameters in TISRVLIS and TIRSIPEX.

Solution:

It is now possible to customize the TCP/IP CICS sockets parameters ACCTIME, GIVETIME and REATIME for use with the TISRVLIS.

The default values for ACCTIME, GIVTIME and REATIME are as follows:

ACCTIME = 96 seconds
GIVTIME = 96 seconds
REATIME = 5 seconds

However it should be noted that such values are only a guideline and optimal values for the 3 parameters will be very much dependent on the specific application design and environment. Therefore, determination of the optimal values requires you to perform your own on-site testing.

When setting the timeout values, you may want to take into account the following behaviour:

  • If REATIME = 0 is set in the file EZACONFG and this is not updated in exit TIRSLTMX, the timeout will be interpreted as zero seconds and not as 'checking for read timeout is not performed', which might be inferred by the IBM CICS Sockets Guide: http://publib.boulder.ibm.com/infocenter/zos/v1r9/index.jsp?topic=/com.ibm.zos.r9.halc001/typeparm.htm

  • If you are performing security validation in TIRSLEXT and that validation fails then the TISL will not process any new requests until the REATIME has been reached.

  • If the REATIME is set too low (for your system) then you may find that the handover of the socket to the server manager fails and the following format error messages are written to the CICS log

    INCOMING MESSAGE DID NOT HAVE ANY DATA; SOCKET CLOSED

    NOTE: You may see this message twice.
  • The following non-fatal error can occur when the TISRVLIS takes the socket back thinking the server is not going to take it and the server tries to take the socket after TISRVLIS has taken it back.
    TISRVLIS TASK=00000035 04/15/2008 13:00:31 GIVESOCKET NOT TAKEN FOR SERVER ......   TASK=00062781 04/15/2008 13:00:31 TIRSIPIN SOCKET ERROR TAKESOCKET RETCODE=-0000001 ERRNO=     113....  TASK=00062781 04/15/2008 13:00:31 TIRSIPOT CICS ERROR: READ TSQSIP# FAILED            EIBRESP =       44 EIBRESP2

    To try to prevent this error:
    Either: Increase GIVTIME/GIVESOCKET timeout in EZACONFG/TIRSLEXT
    Or: Decrease READ timeout setting in exit TIRSIPEX

  • The read timeout in TIRSLTMX is used by TISRVLIS to determine if the socket has data to READ/RECV.

    The select timeout in TIRSIPEX is used by the server runtime to determine how long to wait for data to arrive on the socket before deciding not issue a socket READ/RECV.
    If the server manager select timeout in TIRSIPEX expires before the data from the client was able to be read, the following fatal errors will occur in the 'DEST-ERR' TDQ specified in TIRSIPEX (default CSSL):
    XXXXXXXX TASK=00000174 08/04/2008 14:14:13 TIRSIPIN SOCKET ERROR SELECT   TIMEOUT  RETCODE=+0000000 ERRNO=  00XXXXXXXX TASK=00000174 08/04/2008 14:14:13 TIRSIPOT SOCKET ERROR WRITE   RETCODE=-0000001 ERRNO=   1027XXXXXXXX TASK=00000174 08/04/2008 14:14:13 TIRSIPOT SOCKET CLOSED ERROR -  CLOSE
    This is normally accompanied by TCP 10054 errors at the client, even after multiple retries for the same transaction.
    The resolution is to increase WORK-SELECT-MICROSEC-DEF (default 100) or WORK-SELECT-SECS-DEF (default 0) in TIRSIPEX until the problem is resolved.
    If the problem is intermittent in nature, needing to increase these values may indicate a network performance problem

  • If you wish to use the Microseconds parameter in the TIRSLTMX then you need to take into account that this is used in conjunction with the Seconds parameter so if you wish to set an overall value of 0.5 seconds, apart from setting the Microseconds to 500000 in the exit, the seconds value must be set to 0 in either in the exit or in the EZACONFG.

  • The EZACONFG and TIRSLTMX are read once at the beginning of the process. Any changes to either require that the listener be stopped and restarted for the new values to be used. The TIRSLEXT is read on every server request, so can be changed while the listener is running. TIRSIPEX is a server runtime exit, so it is read by each server task and its timeout value used. If TIRSIPEX is changed, the changed value is used by any new server tasks started after the DLL containing TIRSIPEX is re-deployed.