Before getting into the configuration itself, it is important to review the terminology below from the respective README files as it explains what which timeout does.
OpenEdge 11.7.5 openedge.properties.README reads:
idleResourceTimeout=300000
Timeout value in milliseconds to determine the frequency with which the PASOE server checks for idle resources. Any resource (e.g. connection,
agent, or client session) that has not been accessed more recently than the specified timeout for that property will be terminated. If this property is set to zero, then idle resource checking is disabled.
Note: The idleResourceTimeout is fully supported starting with OpenEdge 11.7.2 onwards. Check the notes section for the restrictions that may apply due to known issues (now fully addressed in OpenEdge 11.7.5)
idleSessionTimeout=300000
This applies to the APSV transport.
Timeout value in milliseconds for an idle SessionManager session.
If a SessionManager session is idle for more than the specified timeout value, then the session will be deleted when idleResource cleanup is done.
idleAgentTimeout=300000
Timeout value in milliseconds for an idle agent.
If an agent is idle for more than the specified timeout value, then the session will be deleted when idleResource cleanup is done.
idleConnectionTimeout=300000
See below.
Unlike stated in the openedge.properties.README prior to release 11.7.3, time unit for idleSessionTimeout, idleAgentTimeout, idleConnectionTimeout parameters are in milliseconds.
OpenEdge 12.x openedge.properties.README reads:
idleSessionTimeout=1800000
Timeout value in milliseconds for an idle SessionManager session. The APSV
transport uses this value to set the expiration time of the HTTP Session
when using HTTP Sessions. It defaults to 30 minutes, which is the same
value used by the other transports. Their HTTP Session expiration is controlled
in web.xml. This does not require idleResourceTimeout to be set because it is
handled by Tomcat.
The following figure describes the Progress Application Server for OpenEdge primary subsystems.
Each number (1-5) in the figure represents a corresponding section below associated with the subsystem and the flow of information.
As shown in the diagram above, clients connect via the HTTP protocol which is a connectionless protocol.
The order of operations for timeout properties:
- agentListenerTimeout
- connectionWaitTimeout + requestWaitTimeout
- idleConnectionTimeout
- sessionExecutionTimeLimit
- idleSessionTimeout
- idleAgentTimeout
Terminate idle HTTP sessions (1)
Note: This only applies to the WEB, REST, and SOAP transports. See idleSessionTimeout(2) for the APSV transport configuration.
Edit the session-timeout property in conf/web.xml to set the maximum amount of time (in minutes) that can elapse between client HTTP requests before the client's HTTP session (identified with JSESSIONID) expires and is no longer usable.
This does not require idleResourceTimeout to be set because Tomcat handles it.
<session-config>
<session-timeout>30</session-timeout>
</session-config>
Terminate idle SessionManager sessions (2)
- The idleSessionTimeout determines how long a client SessionManager session can be inactive before that session is automatically shut down. Also refer to KB article: idleSessionTimeout feature fails when using HTTP sessions with APSV transport
- SessionManager sessions are listed on OpenEdge Explorer (OEE) or OpenEdge Management (OEM) in the "Client sessions" page.
- This setting does NOT affect ABL Sessions (5) on the MS-Agents ("Agent sessions" page in OEE/OEM).
- Requires idleResourceTimeout to be greater than 0 for the idleSessionTimeout property to be enabled in OpenEdge 11.7.x. In OpenEdge 12.x , the idleSessionTimeout property works independently from the idleResourceTimeout propertly if the APSV transport is configured to use HTTP sessions (useHTTPSessions=1 in openedge.properties).
- If a client terminates abnormally, then these sessions will be cleaned up when the Idle Session Timeout is triggered. Also refer to the following KB article: PASOE Sessions get stuck in Request State "Reading"
- When useHttpSessions is disabled (e.g. useHTTPSessions=0), this bypasses the HTTP Session Idle Timeout. Sessions will not be deleted when a client connection is terminated abnormally, so this could eventually exhaust the maxConnectionsPerAgent setting. In this case, idle sessions will be deleted only when the idleResourceTimeout is greater than 0.
Terminate idle connections between the PASOE Session Manager and the ABL multi-session agents (3)
- idleConnectionTimeout determines how long a socket connection (3) between the PASOE server and an ABL multi-session agent (MS-agent) can be idle before it is automatically disconnected.
- Requires idleResourceTimeout to be greater than 0 for the idleConnectionTimeout property to be enabled.
Terminate idle ABL multi-session agents (4)
- idleAgentTimeout - determines how long an ABL multi-session agent process can be idle before it is automatically shut down.
- Requires idleResourceTimeout to be greater than 0 for the idleAgentTimeout property to be enabled.
The downside of this property is that when an agent is terminated and maxAgents is greater than 1, a burst of requests can cause all the agents to start simultaneously, to alleviate this since OpenEdge 11.7.2 additionally configure:
- The property minAgents, which was added to alleviate the burst effect. This will always assure the minimum set of agents are running even when MSAgents get terminated after idleResourceTimeout
- The property agentStartLimit can be configured to throttle how many agents will be started simultaneously when the Session Manager determines more agents are needed and thereby smooth out the proliferation of agents when PAS dynamic ABL session scaling would otherwise cause a phenomenon referred to as "Agents Explosion" or an "Agent Storm". For further information refer to Article: When does a new Multi-Session Agent (MSA) start ?
Terminate idle ABL multi-session agent sessions (ABL sessions) without terminating the Agent. (5)
None of these settings configured in the openedge.properties will automatically clean up MS-Agent idle
ABL Sessions. HTTP is a connection-less protocol that does not require a valid socket to be opened at all times
In order to manually terminate IDLE MS-Agent ABL sessions, but not terminate the MS-Agent, use either OEJMX or the OEMANAGER REST API,
What are the terminate options for the "terminateABLSession" REST API or OEJMX query?An enhancement request has been submitted as an Idea on the Progress Community to automatically terminate MS-Agent ABL Sessions. To promote the Idea, click on this link:
https://openedge.ideas.aha.io/ideas/OPENEDGE-I-940. Customer feedback is valuable and Idea submissions are monitored by our Product Management team. Enhancement requests are reviewed during the planning phase of each new product release and a list of the enhancements chosen for implementation can be found in the Release Notes documents that accompany each release. Once an Idea is submitted the Progress Software Community will have the opportunity to comment on and vote for the Idea. It's priority will be evaluated as customer demand weighs in through Article Feedback and through vote count in the Ideas Portal
For detailed information on how to submit an Idea, please refer to Knowledge Base article
How to submit an enhancement request for a Progress product?.