Consultor Eletrônico



Kbase 20905: Network Problem causes error 1154 and 748 to occur.
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   17/05/2005
Status: Verified

FACT(s) (Environment):

Progress 9.1B
Progress 9.1C
Progress 9.1D
Progress 9.1E
OpenEdge 10.x

SYMPTOM(s):

Attempting to establish a remote connection to the database fails.

No servers are available. Try again later. (1154)

The server or the system has no more resources. Try a larger -n. (748)

CAUSE:

When a client issues a connection to a Progress Database, the client looks up the broker port the database was served by the -S switch, however the broker can never tell if the client is able to connect to the remote-server it has chosen to direct the client to. The assumption is that if the client can reach the broker, it can also reach the server, however this might not possible due to network problems or a misconfiguration in some network device.

Through time, the broker continues to increment its count of connected users, even though they might not truly be connected *** and ultimately the -n broker startup parameter is exceeded. The remote servers would functionally believe they had more clients than they truly had connected and would ultimately not be able to accept new clients, furthermore a point would arrive where no more servers could be spawned as the -Mn startup parameter would be reached.

FIX:

In patch 9.1B15, Progress added the concept of a "reservation" for the client, where the broker increments the "reservation" count on the server when it redirects the client.

The load balancing algorithm of the Progress Broker uses the reservation count and the connected client in its decision making about which remote server should service the next client who requests a remote connection. The remote servers then examine the timestamp on the latest reservation and, if the -PendConnTime period has elapsed, it is assumed that client has failed to connect and the reservation is cleared. The server is then available for new clients.

The default value for this database broker startup reservation parameter is 0, (disabled) and any time that is set must be expressed in seconds. There is also a new column under PROMON > R&D > 1 > 3 that can be used to determine if any remote server has a pending user connection that has yet to be resolved. For example:

Prior to the addition of the -PendConnTime parameter:

?03/14/01 Status: Servers
12:50:55
\/
Sv Pend. Cur. Max. Port
No Pid Type Protocol Logins Users Users Users Num

0 1604 Login TCP 1637 0 0 3 2500
1 1788 Auto TCP 1392 0 0 3 3000
2 928 Auto TCP 245 0 0 3 3002
3 0 Inactive 0 0 0 0 0

Enter <return>, R, P, T, or X (? for help):


In this situation the Broker has internally modified its count of clients that are logged in because an attempt for connection was made. The broker has either spawned another remote server or has notified an existing remote server that it is about to receive another client.

With the addition of the -PendConnTime parameter

To enable the -PendConnTime parameter add the following to your database startup parameters.

-PendConnTime (seconds)

When -PendConnTime is enabled, a counter is started (which the user defines in seconds) and when the counter elapses the remote server understands to modify its counts of pending client connections realizing that the client has not completed a successful connection. The broker is also updated to adjust its count of connected clients.