Salesforce

How to kill the AdminServer processes?

« Go Back

Information

 
TitleHow to kill the AdminServer processes?
URL NameP104854
Article Number000111826
EnvironmentProduct: Progress
Version: 9.x
Product: OpenEdge
Version: 10.x, 11.x
OS: UNIX
Question/Problem Description
How to kill the AdminServer processes
How to kill the AdminServer broker on UNIX?
How to get a javacore against the AdminServer Broker ?
How to generate a thread dump against AdminServer processes?
How to force a stack against the AdminServer?
When the proadsv command stops responding (hangs) how to stop the AdminServer processes?
Steps to Reproduce
Clarifying Information
Error Message
Defect Number
Enhancement Number
Cause
Resolution
The associated stack trace for parallel investigations with the associated log files should first be gathered before issuing a forceful process shutdown (kill -9) will get rid of the AdminServer processes.  It is very important that the correct process is terminated and the corresponding evidence generated is recorded.  Please note simply issuing a kill against the process is not necessarily the best way forward in all cases and should be taken under cautious advisement.

Once a hang occurs, iow: the proadsv command stops responding, the Steps below should be used to ensure that the appropriate information is gathered.  While undertaking these steps, be sure to keep track (by PID) which processes were killed.

Summary of Steps:
 
1) Find the AdminServer process and the path to the java runtime executable.
2a) If the feature is available, ask the Java runtime to generate a Java core file.
2b) Ask the Java runtime executable to generate a UNIX core file.
2c) If possible, get the stack trace from the core file
3) Terminate the remaining processes
4) Restart the AdminServer.

Detailed Steps:

0) Open a UNIX session as the system administrator or as the user who initially started the AdminServer process.

1) Find the AdminServer process, using the "ps" command.

Example:
AIX/Solaris$  ps -ef | grep java | grep AdminServer
GNU/Linux: $  ps auxw | grep java | grep AdminServer

Take note of the full path to the java executable for the core file produced in Step 2c below.

Example: "-Dadmsrv.jvm=/usr/java15_64/sdk/jre/bin/java"

2) Ask the process to tell you as much as possible about its current state saving the associated evidence produced.

2a) Create a javacore

Steps differ depending on the platform, consult the related man pages for further details, this feature is not available on all UNIX implementations. In all cases ensure you have the correct process-id.

AIX: Send it a SIGFPE signal (signal 8).  This asks the java layer (javacore) to create a dump of its current state in a file named "javacore<number>" in the working directory. A listing of javacore's created can be referenced in "/tmp/javacore_locations".
 $  kill -8 <PID>

For other systems using the Sun Java virtual machine send the process a SIGQUIT signal (signal 3).  This asks the java layer to create a Java stack trace on its console, which is redirected to the AdminServer log file, or a file named admserv.exp in the working directory.
$  kill -3 <PID>

2b) If the process did not terminate while generating a java core, send the signal SIGABRT to the process, to get the information from the c-layer.
$  kill -6 <PID>

This will result in a "core" file in the working directory. Save it for Step 2c.
A number of "protrace.<pid>" files could also be created (from the running Progress sessions started by AdminServer).  Save this evidence as well.

2c) Use a debugger to get a stack trace from the "core" file. The complete path to the java executable is needed here (extracted in Step 1 above).

For example if dbx is available, using the information saved in Step 2b:
 
$ dbx /usr/java15_64/sdk/jre/bin/java core | tee core.out
[dbx]where
.
[dbx]detach
[dbx]quit

If dbx is not available use gdb instead. (http://www.gnu.org/software/gdb/download)

3) Remaining processes managed by the AdminServer may have not terminated gracefully with the previous steps and will need to be removed. (eg: java, _proapsv)

For remaining processes, first send SIGTERM (kill -15) which are not responding
After a delay, if this is not sufficient use SIGKILL (kill -9 ...).

If on AIX, run "/usr/sbin/slibclean" which removes any currently unused modules in kernel and library memory.

4) Restart the AdminServer
$ proadsv -start -port <portnumber> -adminport <portnumber>
Workaround
Notes
Keyword Phrase
Last Modified Date11/20/2020 7:35 AM

Powered by