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.
  • Setting of 0 means minAgents is disabled.
  • Any value greater than 0 is used for minAgents.
  • If minAgents is greater than maxAgents, the minAgent value is lowered to match the maxAgents.

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.
Note: Full property descriptions are located in the instance-name/conf/openedge.properties.README file.
How the OpenEdge properties should be set depends on the operating model implemented by your ABL application:
  • 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:

  1. The instance receives a client request from an oeabl web application transport.
  2. The first MS Agent in the list of MS Agents is set as the current agent.
  3. 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.
  4. 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.
  5. 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.
  6. 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 .
  7. 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.