We have two Tomcat 6.0.20 servers leaving Apache, and the communication between them is done using AJP. Tomcat, in turn, consumes web services in the JBoss cluster.
This morning, one of the Tomcat machines used 100% of the processor on 6 of the 8 cores on our machine. We grabbed a bunch of heaps using JConsole and then tried plugging in JVisualVM to get a profile to see what the whole processor was accepting, but that caused Tomcat to crash. At least we had a bunch of heaps!
I uploaded a bunch of heaps in the Eclipse MAT, where I found that we have 565 instances of java.lang.Thread. Some of them are obviously completely legitimate, but the vast majority are called "ajp-6009-XXX", where XXX is the number.
I am very good at the Eclipse MAT, but could not find an explanation. If anyone has any hints as to why Tomcat can do this, or any hints as to why using the Eclipse MAT would be appreciated!
source
share