Community

Collecting Diagnostic Data After a Crash

Share this post:

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.

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 How-tos Stories

Centralized Configuration for Spring Apps on Bluemix Kubernetes

In this tutorial, we'll adapt the Centralized Configuration guide from the Spring website to be deployed to Bluemix Kubernetes. We'll host our configuration files in a Github repository. Before getting started, you should follow the guide or download the complete version.

Continue reading

Precise Visibility into Applications with Instana on IBM Bluemix Container Service

In this blog post we discuss how Instana integrates with IBM Bluemix Container Service to provide full visibility of your containerized applications, as they run in production. The linked tutorial was written by Pedro Pacheco, a Senior Solution Architect at Instana, with over 20 years of experience. We are excited to partner together to demonstrate how quickly and easily users can deploy a Kubernetes cluster in the IBM Cloud, deploy a sample application, and then leverage Instana’s Dynamic APM, which delivers visibility and performance management for dynamic containerized applications running in the cloud.

Continue reading

Get the most out of Salesforce

CRM systems are critical for enterprises. They allow business users to more easily access and manage customer information and records customer interactions from multiple channels. CRM systems also automate workflows and provide tracking, performance and productivity information.

Continue reading