Consultor Eletrônico



Kbase 19707: AdminServer Hangs & java.lang.OutOfMemoryError
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   16/06/2009
Status: Verified

GOAL:

This solution discusses possible solutions to a Progress AdminServer hang or shut down

GOAL:

How to investigate AdminServer Hangs with java.lang.OutOfMemoryError

FACT(s) (Environment):

All Supported Operating Systems
Progress 9.x
OpenEdge Category: Database

FIX:

Take these steps:


1) Try to query the AdminServer (proadsv -query)".
2) If you get no response try to start the AdminServer (proadsv -start).
3) If you get no response try to stop the AdminServer (proadsv -stop).
4) If you still get no response, you might need to do a soft kill on the process.

Do not do a "kill -9" unless all other attempts fail. Once the process is stopped you might be able to start the AdminServer. You can also look at the AdminServer log file (admserv.log). Look for the following error messages:


java.lang.OutOfMemoryError
java.lang.OutOfMemoryError
java.lang.NoClassDefFoundError
java.lang.OutOfMemoryError
java.lang.OutOfMemoryError:
java.io.DataInputStream
at sun.rmi.transport.tcp.TCPTransport.run(Compiled Code)
at java.lang.Thread.run(Compiled Code) These errors indicate that you are exceeding free space in the Java heap. This may also result AdminServer shut down or hang.

Heap space is controlled in Java applications by using the command line options -ms and -mx. Use -ms to set the minimum heap size and -mx to set the maximum heap size. These options are followed immediately (without intervening spaces) by numbers in bytes or numbers in megabytes when followed by the letter m or M. For example, to set the minimum heap size to one megabyte you could enter either -ms1m or -ms1048576.

Progress uses the Java defaults for memory allocation. At startup, memory allocation is 1 MB (Microsoft). The maximum is 16 MB (Unix). For Java 1.1.8 on AIX, the default minimum is 1 MB; the default maximum is 32 MB. The absolute maximum is 1000 MB. Technical Support has seen instances in development environments where many entries (over 400) in the Ubroker.properties file exceeds the 16 megabyte and causes the above error messages in the AdminServerSystemOut.log file.

You can modify the Java heap size by editing the Java_env file to resolve the Java out of memory errors. Generally, mx should be increased. Follow these steps:


1) Locate within the file: JVMARGS="-ms1m".


This indicates that minimum heap size is 1 MB at startup. There is no entry for the maximum heap size. The default setting can be found in the JRE readme file for your specific OS. 2) Try increasing the maximum heap size mx. For example, edit the Java_env file as shown:


JVMARGS="-ms256m -mx512m"

Further explanation is that the size of the heap drives the frequency and duration of garbage collections and the amount of swap space used. Thus, -ms and -mx indirectly influence garbage collection.