3

We have a Java application server which does real-time audio/video processing and for that purpose, it consumes a lot of memory (25+GB of RAM). Due to some, yet unknown, mistake in our JNI, every now and then our JVM crashes.

Our server runs on Ubuntu 16.04.2 LTS and when our JVM crashes, it behaves very strangely. It begins dumping the heap dump into /var/crash, it reaches the size of ~1.4GB (compressed) and halts, overwriting the heap dump with 50KB of data.

Apport log:

ERROR: apport (pid 30913) Tue Oct 23 12:38:49 2018: called for pid 29206, signal 6, core limit 0
ERROR: apport (pid 30913) Tue Oct 23 12:38:49 2018: executable: /usr/lib/jvm/java-8-oracle/bin/java (command line "<JAVA COMMAND AND OPTIONS GO HERE>")
ERROR: apport (pid 30913) Tue Oct 23 12:38:49 2018: is_closing_session(): no DBUS_SESSION_BUS_ADDRESS in environment
ERROR: apport (pid 30913) Tue Oct 23 12:59:30 2018: core dump exceeded 11238 MiB, dropped from /var/crash/_usr_lib_jvm_java-8-oracle_bin_java.0.crash to avoid memory overflow
ERROR: apport (pid 30913) Tue Oct 23 12:59:30 2018: wrote report /var/crash/_usr_lib_jvm_java-8-oracle_bin_java.0.crash

It seems that apport is rather unpredictable. In addition to this, contrary to what apport says, it does not utilize the kernel.core_uses_pid - every single heap dump uses the name _usr_lib_jvm_java-8-oracle_bin_java.0.crash.

  1. Is there some alternative to apport for capturing java heap dump?
  2. If not, is there a way to capture the whole heap dump?
  3. Finally, how about core_uses_pid? Apport's source suggests it should be used, but the filenames says different.

If I can update the question with any additional info please do not hesitate to ask. Thanks!

1

0

You must log in to answer this question.

Browse other questions tagged .