Community

Collecting Diagnostic Data After a Crash

If a Liberty Bluemix application crashes, the default behavior is that it will immediately restart. The problem with this behavior is that all diagnostic files such as dumps and traces are lost. In order to delay the restart so that dumps and traces can be collected, set this environment variable for your application:

IBM_JAVA_OPTIONS: -Xdump:tool:events=gpf,exec="sleep 1d" -Xdump:what

This environment variable results in the JVM remaining available (but non-functional) after a crash. Traces and dumps can be collected with the cf files command, and then the application can be restarted with cf stop and cf start.

The application will be automatically restarted after the time period specified on the sleep command (1 day, in the above example). Note that you can specify any time period using s, m, h, or d for seconds, minutes, hours, or days, respectively.

Setting the environment variable can be done in a number of ways:

  • Using the cf push command with -f option to provide a manifest.yml that contains the environment variable. Here is a sample manifest.yml:
<strong><code># manifest for crashTest<br />applications:<br />- name: crashTest<br />  memory: 512M<br />  path: c:\tmp\zips\crashTest.zip<br />  env:<br />    IBM_JAVA_OPTIONS: -Xdump:tool:events=gpf,exec="sleep 1d" -Xdump:what</code></strong>
  • Using the cf set-env command on an already pushed app, followed by cf push to activate the new setting. This command requires outer quotes for the entire value and escaping the inner quotes around the sleep command with backslashes like this:

cf set-env <appName> IBM_JAVA_OPTIONS "-Xdump:tool:events=gpf,exec=\"sleep 1d\" -Xdump:what"

  • Using the ACU UI to set the environment variable under the runtime. The application is automatically restarted when you press ‘save’. No outer quotes or backslashes are required on the value.

Details on the -Xdump option can be found here:
http://www-01.ibm.com/support/docview.wss?uid=swg21242497

Using cf logs <app> –recent may provide some useful diagnostics after a crash even without the IBM_JAVA_OPTIONS environment variable set. If issued promptly, it may confirm that a crash and restart has occurred.

Share this post:

Share on LinkedIn

Add Comment
One Comment

Leave a Reply

Your email address will not be published.Required fields are marked *


Rajesh K Jeyapaul

Thank you. Very useful information.

Reply
More Community Stories

InterConnect 2015: Bluemix Updates

I’m writing this edition of the blog from Las Vegas as IBM InterConnect 2015 enters its final day. It’s been a great week with lots of exciting news, and I can’t help but reflect how far we’ve come since Bluemix was first announced about a year ago at IBM Pulse. As Bluemix continues to mature […]

Bluemix on Stack Overflow!

Today's developers rely on search for problem resolution and how-to advice. Many of those searches land on Stack Overflow, a leader among technical community Q&A. Recognizing the importance of engaging with developers where they congregate online, the Bluemix development and support team is active on Stack Overflow, following the #bluemix tag. Some Bluemixers new to Stack Overflow wonder how it is supported versus dW Answers for Bluemix hosted here on developerWorks. Is one more "official" than the other? Are certain types of questions more appropriate for one venue versus the other?

Australian Open 2016: Design Principles of Bluemix Social Sentiment Application

Many potential record-breaking and historical stories will play out live at the Australian Open 2016 that will drive interaction through social media such as Twitter. The interaction between fans and the Australian Open 2016 website and experience, hosted by IBM’s Continuous Available Services – Events Infrastructure, must be able to resiliently operate under intense volumes of traffic. This post presents the design principles behind IBM's Social Sentiment Application.