Application does not start when the wrapper launches the JVM process

Document ID : KB000006438
Last Modified Date : 14/02/2018
Show Technical Document Details
Issue:

A Java application does not start when the wrapper launches a JVM process. Typically no application or agent logs are created.

Error messages:

Startup failed: Timed out waiting for a signal from the JVM.
JVM did not exit on request, termination requested.
JVM received a signal SIGKILL (9).
JVM process is gone.

or

wrapper  | JVM was only running for 30 seconds leading to a failed restart count of 1. 
wrapper  | There were 2 failed launches in a row, each lasting less than 30 seconds.  Giving up. 

or

wrapper[1]: Launching a JVM...  
wrapper[1]: Startup failed: Timed out waiting for signal from JVM.  
wrapper[1]: JVM did not exit on request, terminated  
wrapper[1]: There were 5 failed launches in a row, each lasting less than 30 seconds.  Giving up.  
wrapper[1]:   There may be a configuration problem: please check the logs. 

 

 

Environment:
APM 10.5.1
Cause:

Applications using a Startup Wrapper may not start properly when the application is instrumented with an agent. This is because the agent may add additional overhead to the startup, preventing the application from starting up in the time window allowed by the startup wrapper.

By default, many startup wrappers have a startup timeout of 30 seconds - if the application does not start within 30 seconds, it will fail with no messages written to the application or agent logs.

If the wrapper log is active, and the application is not starting up, examination of the wrapper log will show if the startup timeout was hit. If it is not active, then it can usually be activated in the wrapper.conf configuration file by adding in the line:

wrapper.logfile.loglevel=INFO

A location may need to be specified for this output log - controlled by the property

wrapper.logfile=<location of log> - for example, wrapper.logfile=../logs/wrapper.log

Resolution:

Add wrapper.startup.timeout parameter in wrapper.conf file

 

Example:

# ADD this line for change the startup timeout
wrapper.startup.timeout=300

 

wrapper.startup.timeout:

The number of seconds to allow between the time that the wrapper launches the JVM process and the time that the JVM side of the wrapper responds that the application has started. Entering a 0 value means the system will never time out.

By default this is set to 30, setting this to a higher value such as 300 (wrapper.startup.timeout=300), will usually resolve the problem. In some cases this additional timeout needs to be adjusted to a higher value as well:

 

wrapper.ping.timeout=

Additional Information:

See more on:

https://docops.ca.com/ca-apm/10-5/en/administrating/properties-files-reference/emservice-conf#EMservice.conf-wrapper.startup.timeout

Please have in mind that for each application you should check the JVM call entries.