ABL Session Manager and session pool
- Last Updated: January 30, 2025
- 3 minute read
- OpenEdge
- Version 12.2
- Documentation
The ABL session pool is managed by the Session Manager which is common to all of its configured OpenEdge web applications in a PAS for OpenEdge instance.
The properties specified in the instance-name/conf/openedge.properties configuration file control how the Session Manager manages the ABL session pool, the pool of MS Agents, and the local network socket connections.
The file can be edited managed using the instance-name/bin/oeprop.[bat|sh] command line utility, OpenEdge Management, or a text editor.
This topic describes the openedge.properties and how they can be used to tune the MS Agent and ABL sessions of a PAS for OpenEdge instance:
| Property [AppServer.SessMgr] | Default | Description (per ABL Application) |
|---|---|---|
numInitialAgents |
1 |
Number of MS Agent processes to create at server startup. |
maxAgents |
2 |
Maximum number of MS Agent processes that can exist. |
maxABLSessionsPerAgent |
200 |
Maximum number of ABL sessions per MS Agent process. |
maxConnectionsPerAgent |
200 |
Maximum number of network connections between Session Manager and an MS Agent. |
requestWaitTimeout |
15000 |
Maximum time in milliseconds that a client request is queued waiting for an ABL session before an error is generated. |
idleSessionTimeout |
300000 |
Maximum time in milliseconds that an ABL session remains idle before it is shut down. |
idleAgentTimeout |
1800000 |
Maximum time in milliseconds that a MS Agent remains idle before it is shut down. |
agentListenerTimeout |
300000
|
Maximum time in milliseconds that the Session Manager waits for an MS Agent to report it has started before an error is generated. |
agentStartLimit |
0 |
Determines the maximum number of agents that may be started at the same time. If this value is zero or not defined, then no limit is enforced. This property can be used to prevent an "agents explosion", which is sometimes seen when a burst of new client activity occurs when no agent sessions are available on existing agents. In response to this, the session manager may try to start a new agent process for every client request received. The agentStartLimit property can throttle the number of agents started simultaneously. |
minAgents |
1 |
Minimum number of agents expected at any time. If the number of agents
drops below this number, a client request causes the Session Manager
to start enough agents to match this number.
The Session Manager ensures that there is always one MS Agent available at all times before running the request. |
idleConnectionTimeout |
300000 |
Timeout value in milliseconds between a PAS for OpenEdge client and the Session Manager. If a connection is idle for more than the specified timeout value, the Session Manager terminates the connection by automatically disconnecting the connection to the PAS for OpenEdge instance. |
idleResourceTimeout |
0 |
Timeout value in milliseconds to determine the frequency with which
the PAS for OpenEdge instance checks for idle resources. Any resource
(for example, a connection, agent, or client session) that has not been
accessed more recently than the specified timeout for that property is
terminated. If this property is set to 0, idle resource checking is disabled. |
defaultAgentWaitAfterStop |
30000 |
Timeout value in milliseconds to wait for a busy
agent to finish work during a shutdown caused by the expiration of the
idleAgentTimeout. This value should be greater than
the normal execution time of the the application's longest running
request. |
defaultAgentWaitToFinish |
30000 |
Timeout value in milliseconds to wait for a
stopping agent to finish work during a shutdown caused by the expiration
of the idleAgentTimeout. When this timeout expires, the
agent is forcibly shut down. This value should be greater than the
longest time required to handle a normal STOP condition for the
application. |
| Property [Appserver.Agent] | Default | Description (per MS Agent) |
|---|---|---|
numInitialSessions |
2 |
Number of ABL sessions started at MS Agent startup time. |
- Stateful
- Stateless
These application model implementations affect property settings and require an understanding of how the ABL Session Manager manages the client session pool, the MS Agents in which the ABL sessions run, and how ABL sessions are selected to execute client requests.
The first priority of the Session Manager is to conserve system resources by maximizing the pool of ABL sessions and by scaling a larger number than is needed to handle the current client load. PAS for OpenEdge uses a find-first-free scheduler and only one ABL session. It thereby consumes only one session worth of OS memory and file system handles.
The following is a general description of how the Session Manager implements its find-first-free scheduling of client requests using MS Agents, local socket connections, and ABL sessions:
- The instance receives a client request from an
oeablweb application transport. - The first MS Agent in the list of MS Agents is set as the current agent.
- If the current MS Agent has an unused agent connection and a free ABL
session, the MS Agent executes the client request.
- During this time the local agent connection is placed into an in-use state and the free ABL session is bound to the agent connection, whereby neither is available for use by other client requests.
- When the client request ends, the ABL session is marked as free if a persistent procedure has not been executed and the ABL application code has not set a bound-client condition. The local agent connection returns to the unused state as available to execute any other client's request.
- If the number of current MS Agent local agent connections is less than the maximum, and any ABL sessions are free, the Session Manager creates a new agent connection to run requests on and executes the client request.
- If the number of current MS Agent local agent connections reaches the maximum, and another MS Agent exists in the MS Agent list, the next MS Agent is set as the current agent, and executes the client request.
- If the maximum number of MS Agents has been reached, you should create a new MS Agent. It is added to the end of the MS Agents list, set as the current agent, and executes the client request .
- If you receive a large number of client requests, queue the request if the maximum request queue size is not exceeded. Queued requests are de-queued and executed as soon as a MS Agent socket connection becomes available.
PAS for OpenEdge provides support for stateless and stateful application architecture models, where all client requests are handled stateless and the ABL application can temporarily bind the client and operate in a stateful manner. The implications of this determine how many ABL sessions and MS Agents to configure.