IBM Support

Why do I keep seeing ECI_ERR_RESOURCE_SHORTAGE errors when using an EXCI connection to CICS?

Question & Answer


Question

I have an EXCI connection between CICS TG and CICS TS. Each CICS server has ReceiveCount set under LOGONLIM so they should have enough pipes to handle the load. Why is this error occurring and how can I avoid it?

Answer

ECI_ERR_RESOURCE_SHORTAGE errors when using an EXCI connection are usually the result of running out of EXCI pipes. If the resource shortage is accompanied by EXCI Reason = 608 as in the following, you'll know this occurred:

CTG6876E EXCI error: Function Call = 2, Response = 16, EXCI Reason = 608, Subreason field-1 = 0x38, subreason field-2 = 0x80000064, ctg_rc=-16

When CICS TG is running in remote mode this will be seen in STDERR.
When CICS TG is running in local mode it will be found in ctgjnilog.

From the CICS External Interfaces Guide:
EXCI Reason = 608 occurs when there is an IRC_LOGON_FAILURE occurring.

From the CICS Data Areas manual:
Subreason field-1 = 0x38 is seen when the LOGONLIM setting for number of EXCI pipes has been exceeded.

When CICS TG is configured to connect to one CICS server it is necessary only to make sure that both CICS TG's MaxWorker and CICS's SESSIONS resource ReceiveCount are less than LOGONLIM, with the recommendation that MaxWorker be less than ReceiveCount.

However, in cases where CICS TG connects to multiple servers that share an EXCI address space the situation changes. If the servers' ReceiveCount settings are too high the EXCI address space may run out of pipes, even though neither server is at the limit.

Methods To Prevent EXCI Resource Shortages

Short-Term Solutions

1. Reduce ReceiveCount in CICS.

The simple way to determine a proper setting for ReceiveCount is to use the following formula:

ReceiveCount = LOGONLIM / x
(Where x is the number of servers sharing the address space).

So, if you have LOGONLIM set to the default 100 and have two servers sharing an EXCI connection, you should set ReceiveCount no higher than 50. If LOGONLIM is set to 250 but you have three servers sharing the connection you need to set each server's ReceiveCount no higher than 83.

2. Increase LOGONLIM

This setting defaults to 100 but can be set as high as 250. This would allow for increased ReceiveCount values in CICS.

3. Set CTG_PIPE_REUSE to ONE.

The default setting for this is ALL, which is fine when connecting to one server. When connecting to multiple servers, however, it is recommended that this be set to ONE. With this enabled, CICS TG will limit requests for pipes to its MaxWorker setting. If MaxWorker is set less than LOGONLIM it won't be possible for CICS TG to try to get more pipes than are available. Furthermore, if more pipes are needed to a particular server and the gateway is not currently using a pipe to another server it will free the pipe and connect to the server in need of a connection.

4. Reduce connections from CICS TG.

If wish to avoid pipe swapping and want to leave CTG_PIPE_REUSE to ALL, you will need to reduce the connections to CICS by changing the total number of connections that CICS TG can use.

When CICS TG is running in remote mode this is done by reducing MaxConnect in a manner similar to setting ReceiveCount above:

MaxWorker = LOGONLIM / x

Where x is once again the total number of servers.

When CICS TG is running in local mode this can be achieved by reducing the total number of connections in the application server's connection pool(s). If multiple application servers use a local mode connection to CICS, the sum of the connection pools must be less than LOGONLIM.

Long-Term Solutions

The above changes will resolve most EXCI pipe shortage issues. If you find that you are still running short on pipes or the number of connections is insufficient for the number of transactions you need to process need you may need to consider alternatives.

1. Connect to one CICS server.

It is possible to configure a connection to one CICS server which then can direct requests to other CICS servers. This would allow for up to 250 pipes connected to CICS without having to worry about shared connections or pipe swapping.

2. Consider using an IPIC configuration.

Another solution would be to avoid EXCI pipe limitations altogether and implement an IPIC configuration instead. Using this approach CICS TG's MaxWorker and CICS's ReceiveCount can be set much higher, up to 999 sessions.

It should be noted, however, that when an IPIC configuration is used with that many sessions the gateway will require more memory. Review the following to determine how much you'll need to allocate for the gateway to run:

Avoiding OutOfMemory Errors
Tuning the JVM

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSGMJ2","label":"CICS Transaction Gateway"},"Platform":[{"code":"PF035","label":"z\/OS"}],"Component":"","Version":"","Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]

Product Synonym

CICSTG CICS TG

Document Information

Modified date:
23 January 2015

UID

dwa1166665