Feedback
 
Did this article resolve your question/issue?

   

Your feedback is appreciated.

Please tell us how we can make this article more useful. Please provide us a way to contact you, should we need clarification on the feedback provided or if you need further assistance.

Characters Remaining: 1025

 


Article

What is the -PendConnTime parameter?

« Go Back

Information

 
Article Number000010603
EnvironmentProduct: Progress
Version: 9.1B, 9.1C, 9.1D, 9.1E
Product: OpenEdge
Version: 10.x, 11.x
OS: All supported platforms
Question/Problem Description
What is the -PendConnTime database startup parameter?
How does the -PendConnTime connection parameter work?
What are "Pending Connections" ?
How to prevent database connection issues caused by network problems resulting in:
No servers are available. Try again later. (1154)
Steps to Reproduce
Clarifying Information
Error MessageNo servers are available. Try again later. (1154)
Defect/Enhancement Number
Cause
The Pending Connection Time database startup parameter (-PendConnTime) can be used to prevent client/server connection errors caused by network problems exhausting remote server connection slots (-Ma). 

When a client attempts to connect client/server to a Progress OpenEdge database, the database engine assumes that if the client can reach the listening port of the login broker, it can also reach the listening port of the remote server the login broker re-directs the connection to. Network problems or incorrect configuration of network devices can prevent the client from reaching the server and completing the 3-way connection handshake. In such instances, the database login broker, unaware that the client's connection failed, continues to increment its count of connected users eventually exhausting user slots available for new client-server connections.

To alleviate this problem, the -PendConnTime database startup parameter was implemented in Progress 9.1B15 and above for ABL clients, where the concept of a "reservation" for the client connection was added.  The login broker increments the "reservation" count on the server when it redirects the client to the server.

When the -PendConnTime database startup parameter is specified, the login broker load balancing algorithm uses the reservation count and the connected client(s) in its decision making about which remote server should service the next client connection request. The servers examine the time-stamp on the latest reservation and, if the Pending Connection Time period has elapsed, the broker assumes that the client has failed to connect. The broker then clears the reservation, making the server user slot available for new client connections. The default value for this reservation parameter is 0, (disabled) and any time that is set must be expressed in seconds.

To enable the -PendConnTime parameter,

Add the following to the database startup for each 4GL/ABL login broker:
 
-PendConnTime (value in seconds)

When the -PendConnTime is enabled, the time in seconds is the time allowed for the client to connect to the database server process the login broker re-directs it to.  When the counter elapses the remote server decrements its count of pending client connections realizing that the client has not completed a successful connection within the time allowed. The login broker also updates its count of connected clients.

As of OpenEdge 10.1C03 and 10.2A01, this parameter will also be acknowledged and used by _sqlsrv2 processes when dealing with SQL/ODBC clients.  Prior to these versions, this parameter only applied to 4GL/ABL client/server connections.  This is also the default behavior for the _sqlsrv2 process.  This means that whether the database startup parameter -PendConnTime is used or not, a default value of 30 seconds has been configured for the _sqlsrv2 process. 

A new column "Pend Users" was added to the PROMON views to help determine if remote servers have pending user connections yet to be resolved within the -PendConnTime if specified or will not be resolved if not used relying on TCP KEEPALIVE to expire:
 
PROMON > R&D > 1. Status Displays >  3. Servers; 
PROMON dbname > R&D > 1. Status Displays > 17. Servers By Broker

For example:

Sv                                       Pend.   Cur.   Max.   Port
No    Pid  Type       Protocol   Logins  Users  Users  Users    Num

  0   6012 Login      TCP            11      0      0      4   5454
  1   1788 Auto       TCP             0      0      4      4   3000
  2    928 Auto       TCP             0      1      3      4   3001
  3   1024 Auto       TCP             0      4      0      4   3002
  4      0 Inactive   TCP             0      0      0      0      0 


To simplify the above example:
  • Both -Ma and -Mi are set to 4
  • Server 1 has 4 Current Connections, leading to Server 2 being started for the 5th connection.
  • Server 2 has 3 Current Connections and one Pending Connection that has not yet timed out.
  • Leading to Server 3 being started for the 9th connection which is still pending as are the subsequent 3 connections due to some Network issue at the time resulting in 4 Pending Connection that have not yet timed out
  • If PendConnTime were not in use, the situation would continue until all user slots for Server 4 were used and the 17th connection would fail with:
  • "No servers are available. Try again later. (1154)"
If PendConnTime is in use, once the timeout expired, the pending reservation would be cleared and those user slots made available for the next client/server connections to the Broker's listening port (-S 5454)

The -PendConnTime parameter is not listed in the Progress 9.x documentation for Startup Parameters.  It was first documented in the OpenEdge10 OpenEdge Database Management: Database Administration manual.
Resolution
Workaround
Notes
References to Written Documentation:

OpenEdge Database Management: Database Administration

Progress Articles:

000022509,  What value should be set for -PendConnTime?  
000012609,  SQL clients cannot connect to database even though there are enough servers available.  
 
Attachment 
Last Modified Date1/16/2019 9:00 AM