It appears a multi-step solution is needed.
- First, running out of TCP connections in a scenario like ours is a JCAPS bug addressed in an ESR (110348) and rolled into JCAPS 5.1.3 Update Release 3. We installed this update and noticed a marked improvement. Running my simple 75 user simulated test, transactions took 2521 ms to round trip (compared to the previous time of 20128ms). While this is great improvement, an average of 2.5 seconds is still really slow for this simple transaction.
- We reported our findings to Sun and they responded with 3 additional suggestions to try.
- The first suggestion was to turn on the socket pooling in the JMS server. This is accomplished by setting the JMS URL to
stcms://hostname:18007?com.stc.jms.socketpooling=true
in the eDesigner's Environment Explorer setting for this logical host. - The second suggestion was to change the registry setting for
TcpTimedWaitDelayto 30. This setting controls time a TCP resource is made available to the system again after the connection is closed. - the final suggestion was to change the registry setting for
MaxUserPortto 65534, making more TCP port numbers available.
- The first suggestion was to turn on the socket pooling in the JMS server. This is accomplished by setting the JMS URL to
So, what's my opinion on all this? Obviously I'm really happy with the results, but the steps leading to the solution is what has me scratching my head a little.
- ESRs are unnecessarily hard to implement. First you need to determine the prerequisites and corequisites to install with these patches. Sometimes these are listed in the ESR documentation, but often times they aren't and a call to Sun is needed to sort it all out.
Then once you have all the ESR you need, the repository, integration server, and eDesinger all need the patches before you recompile and redeploy the code. Needless to say, this is pretty time consuming. - I did not see any reference to this JMS server URL change in any documentation. It seems that the URL is the only place you can change this setting. There is not administrative console to make this change. Bummer, since it seems pretty important.
- As for the registry settings, environment changes are often the first thing forgotten and the last remembered when upgrading to a new server. I don't like making changes that affect my applications which aren't checked into some sort of source control.