|
From: <PFa...@qu...> - 2008-07-22 17:18:29
|
<FONT face="Default Sans Serif,Verdana,Arial,Helvetica,sans-serif" size=2><div>Hello,<br><br>The purpose of this post is to determine the most appropriate course of action given our current situation.<br><br>Background:<br>The application is running the 3.3.0 x86 release of the Java Service Wrapper and using the WrapperSimpleApp main class at startup. The supporting hardware has 8 CPUs running 4 instances of the application. The processing for this service is quite CPU and memory intensive. It is not uncommon for the CPU utilization on the box to reach 100% for 3-5 minutes at a time, and if four large files arrived in quick succession, the CPU utilization could potentially be pegged for as long as 15 minutes.<br><br>Symptom:<br>The Java Service Wrapper is reporting that the JVM appears to be hung and that the timeout expired while waiting on a signal from the JVM. The Java Service Wrapper then shuts down the JVM even though we believe the application is processing normally. Note: We have explicitly disabled the automatic restart functionality as we would like our existing monitoring software to detect and report the problem with the instance of the application. The following snippet is from the wrapper.log file:<br><br>ERROR | wrapper | 2008/07/21 16:15:53 | JVM appears hung: Timed out waiting for signal from JVM.<br>STATUS | wrapper | 2008/07/21 16:15:54 | JVM Restarts disabled. Shutting down.<br>STATUS | wrapper | 2008/07/21 16:15:54 | <-- Wrapper Stopped<br><br>The wrapper configuration is as follows:<br><br># -----------------------------------------------------------------<br># This file contains the configuration for the Java Service Wrapper<br># -----------------------------------------------------------------<br><br># Set the name of the service.<br>wrapper.name=VPC Gen2 Capture Service 1<br><br># Set the location of the wrapper log<br>wrapper.logfile=../logs/wrapper.1.log<br><br># Set the java command line options.<br>wrapper.java.additional.1=-DFILE_PREFIX=//localhost/data<br>wrapper.java.additional.2=-Dlog4j.configuration=log4j.1.xml<br>wrapper.java.additional.3=-DCAPTURE_SERVICES_LOG_DIR=D:\vpc\capture-services\<br>wrapper.java.additional.4=-Dcom.sun.management.jmxremote.authenticate=false<br>wrapper.java.additional.5=-Dcom.sun.management.jmxremote.port=1151<br>wrapper.java.additional.6=-Dcom.sun.management.jmxremote.ssl=false<br>wrapper.java.additional.7=-Xmx1150m<br>wrapper.java.additional.8=-Xms512m<br>wrapper.java.additional.9=-XX:MaxPermSize=192m<br>wrapper.java.additional.10=-server<br><br># Set the application classpath.<br># The application classpath must contain wrapper.jar!<br>wrapper.java.classpath.1=../lib/wrapper.jar<br>wrapper.java.classpath.2=../../lib/vpc-framework-1.1.3.jar<br>wrapper.java.classpath.3=../../lib/capture-services-1.1.3.jar<br><br># -----------------------------------------------------------------<br># The following properties should not need to be modified.<br># -----------------------------------------------------------------<br><br># Set the application classname and optionally any <br># command-line parameters that must be passed.<br>wrapper.app.parameter.1=com.jpmc.vpc.core.StartApplication<br><br># Set the Java Library Path.<br>wrapper.java.library.path.1=../lib<br><br># Set the Java command.<br>wrapper.java.command=%JAVA_HOME%/bin/java<br><br># Set the Java Service Wrapper main class.<br>wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp<br><br># The following property instructs the Java Service Wrapper<br># to append the system PATH to the java.library.path at <br># runtime. This is used in order to load secondary DLLs.<br>wrapper.java.library.path.append_system_path=true<br><br># Set the debug flag.<br>wrapper.debug=false<br><br># Allow 5 minutes between pings<br>wrapper.ping.interval=300<br><br># Do NOT try to restart the JVM<br>wrapper.disable_restarts=TRUE<br><br># Number of seconds to wait for the ping to timeout<br>wrapper.ping.timeout=900<br><br>Our current thought is that we could set the value of the wrapper.ping.timeout property to be zero. This should prevent the Java Service Wrapper from attempting to ping the WrapperSimpleApp and ultimately prevent the false detection of a hung JVM which was causing the JVM to be shut down in the middle of normal processing. Does that sound about accurate?<br><br>Has anyone else out there experienced this or a similar problem? If so, what was your solution? Is there an alternate property that I should be focused on instead of the wrapper.ping.timeout property? I am aware of the wrapper.cpu.timeout property, but I have not seen any messages in the log to indicate that the wrapper has not received any CPU time for N seconds.<br><br>I would appreciate any input that you may have to offer.<br><div><br>Patrick M. Farrell, PMP, CSM<br>Consultant Mentor<br>Quick Solutions, Inc.<br>A four time INC 500 winner!<br><a href="mailto:pfa...@qu...">pfa...@qu...</a><br></div></div></FONT> |