Consultor Eletrônico



Kbase P107052: Spawning AppServer terminates with System error 49 5487 5475
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   03/07/2008
Status: Verified

SYMPTOM(s):

AppServer fails to initialize

AppServer.server.log shows corresponding errors 5487 5475 49

Fatal transport failure -14. (5487)

Application Server initialization failure. (5475)

SYSTEM ERROR: Memory violation. (49)

AppServer.broker.log shows corresponding error 8117

IOException reading message from server : java.io.EOFException: pipe to server broken (8117)

FACT(s) (Environment):

UNIX
Progress 9.x
OpenEdge 10.x

CAUSE:

The error: "Fatal transport failure -14. (5487)" is key to understanding why this is happening.
failure -14, translates to "#define UNABLE_TO_LISTEN -14" in our code. listen() is a TCP call, made to the OS/TCP stack. So TCP is not letting us listen on the port. There are a number of different possible reasons why this may be happening.
One of the most common reasons is that while the AppServer agent tried to allocate a specific free port within the port range an other process allocated the specific port in the mean time. That can happen if the srvrMinPort srvrMaxPort range of the AppServer agents is the same as the -minport -maxport range of the database the AppServer agents are connection to at startup via -N TCP. With such a configuration it is easy to reproduce the problem by having the minimum clients/server-Mi database startup parameter low so that new starting AppServer agents are causing new database servers to start the same time.
Other possible reasons if the above does not apply are:
1.) Possibly the port is still in use for some reason? You can use netstat -a and see if it is still tied up. Look for the port number and the service name.

2.) This can be caused by the fact that that particular port is reserved by the OS or an_other application, so that when we have it, there's a conflict. E.g. there are entries for ldap in /etc
sswitch.conf defined preventing to allocate the specifc ports specifiied for the the srvrMinPort srvrMaxPort range of the AppServer.

3.) It could also be that the machine is running low on memory at this point in time, there is not enough memory to start another server/agent.

FIX:



Make sure that srvrMaxPort= ; srvrMinPort= under the appropriate section in the ubroker.properties file [UBroker.AS.asBrokername])
for the specific AppServer configuration is different to the minport -maxport database startup parameters. Both are configurable via the Progress Explorer tool.

Essentially we very strongly advise NOT to use port ranges below 3000 because of OS reservations and good practice is to explicitly define Broker ports in use and Server port ranges (srvrMaxPort= ; srvrMinPort= under the appropriate section in the ubroker.properties file [UBroker.AS.asBrokername]). If ldap is installed on the specific machine make sure there is no port conflict.
Check memory resources at the time and further more, change the "initialSrvrInstance=<num>" from the default 5 down to say 2 or 1 in the meantime - under the appropriate section in the ubroker.properties file [UBroker.AS.asBrokername]