Kbase P15531: How to use the ClientTimeOut Startup Parameter.
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  8/28/2009 |
|
Status: Verified
GOAL:
How to use the ClientTimeOut Startup Parameter
GOAL:
How to disconnect Remote 4GL Clients after inactivity period exceeded
GOAL:
How to manage dead Remote Client connections
GOAL:
How to terminate long Remote Client sessions
GOAL:
How do you prevent locked records held by dead Remote Clients?
GOAL:
What tools are available to automatically disconnect dead Remote Clients?
FACT(s) (Environment):
Progress 7.3x
Progress 8.x
Progress 9.x
OpenEdge 10.x
Windows
FIX:
Progress cannot detect a dead remote client connections, instead, it relies on the network protocol to notify the database that a remote user has died or disconnected.
This solution discusses a means of controlling remote 4GL client sessions through the assumption that if the connection has exceeded x-time of inactivity to the database, then the client is probably either (a) hanging or (b) terminated abnormally (crashed).
The ClientTimeOut parameter allows the server process to determine whether a remote 4GL client has been inactive for a specified period of time, and if so, the server disconnects the remote client and backs out any related active transactions. Client "inactivity" is treated as the client not accessing the database for a specified period of time.
Please note that this parameter only manages remote 4GL connections, so if your batch processes are run with shared memory connections, they will not be terminated. The Watchdog functionality could be employed to clean up dead shared memory connections.
The parameter does not work as currently documented, however the functionality is there. This is not available as a command line startup parameter, nor can it be set in the ini file. There is a documentation bug entered for 9.1D and earlier releases.
ClientTimeOut can only be set in the Windows registry and applies to all database started on that machine.
If a client remotely connects to two or more databases and currently works only with one of them, the client will be stopped as "inactive" in other database(s) and the following will appear in the database log file:
Client <num> was inactive for more than <num> minutes(4435).
Please note that ClientTimeOut functionality was broken in 9.1B/9.1C and fixed in version 9.1D02.
Step by step details:
The parameter uses the following syntax:
ClientTimeOut=n
where n is the number of minutes a client can be idle before the server disconnects it.
The ClientTimeOut parameter must be put into the registry of the server machine as a "String Value", in one of the following keys, by default this string will not exist so it will need to be created.
HKEY_CURRENT_USER\SOFTWARE\PSC\PROGRESS\<VERSION>\STARTUP
or
HKEY_LOCAL_MACHINE\SOFTWARE\PSC\PROGRESS\<VERSION>\STARTUP
where <version> is the current version (e.g. 9.1D).
1) Create a "String Value" with the name ClientTimeOut
2) Assign a value to the ClientTimeOut String which is a number <n> that represents the number of minutes to wait before disconnecting an idle client (e.g. 3 minutes = "3" as the value for the string)