IAmYourFaja
IAmYourFaja

Reputation: 56944

Tomcat dies suddenly

Trying to diagnose some bizarre Tomcat (7.0.21) and/or JVM errors on a 64-bit linux (CentOS) machine.

I'm load testing our server application and tried hitting it with 100K messages. Launched jvisualvm and kept my eye on the heap the whole time. Everything was looking great* (see below) until I got to about 93K processed messages and then Tomcat just died. Ran a ps on Tomcat's PID number to confirm it was dead.

Up until this crash:

Nowhere in the server code are any calls to System.exit() - so we can rule that right out (and yes I've double-checked!!!).

I'm not sure if this is Tomcat crashing or the JVM (how do I tell?). And even if I did know, I can't seem to find any indication of what went wrong:

I've heard it is possible to have Tomcat log a coredump when it does but not sure how to do that and online examples aren't helping much.

How would SO go about diagnosing this? What steps should I take to start ruling out all of the possible factors?

Thanks in advance!

Upvotes: 18

Views: 26188

Answers (4)

erickson
erickson

Reputation: 269877

If the JVM crashes, you should have a hs_err_pidNNN.log file; you don't have to do anything to enable this. Its location depends on your OS and how you are running Tomcat. On Windows, they can show up on your desktop, unless you are running as a service. Otherwise, they should be in the current working directory of the crashed process.

Your operating system probably provides additional tools for process monitoring; you could describe your environment more, or perhaps ask at serverfault.com.

It's also possible that jvisualvm is actually causing the crash.

I'd try reproducing the problem, and progressively simplify the scenario to help isolate the cause.

Upvotes: 15

IAmYourFaja
IAmYourFaja

Reputation: 56944

Sorry I had to remove the green check from @erickson. I finally figured out what was killing Tomcat.

It looks like a profiler plugin is not configured correctly with VisualVM and attempting to run a profile on the Tomcat process killed it.

Investigating why right now, and will update this answer once I know more.

Upvotes: 0

dty
dty

Reputation: 18998

Another possibility is that the OS is running out of memory and the OOM Killer is killing your process. In this case, the JVM wouldn't get an opportunity to write a heap dump, or an hs_err_pid file.

Upvotes: 6

Scorpion
Scorpion

Reputation: 3986

You can use the option java -XX:+HeapDumpOnOutOfMemoryError to create a heap dump for jvm crash due to out of memory error.

More details here Using HeapDumpOnOutOfMemoryError parameter for heap dump for JBoss.

Upvotes: 4

Related Questions