I have several host containers (virtual hosts) running.
Lately Tomcat have started to hang (stops answering requests) after reloading a host container, i.e. updating a jar in WEB-INF/lib and then running touch on web.xml.
It does not seem to matter which container I reload. The hanging occurs some time after the reload, two last times about 30 minutes after.
When doing a full restart it runs forever.
I have no idea where to start looking to solve this problem.
Unlike heap space the perm-gen space (which holds class definitions, final vars, and interned Strings) doesn't get cleared out when you reload an application. So, every time you reload, you're adding a new set of class defs to the the perm-gen space.
Diagnosing a Tomcat that does not respond is tricky. The question you need to answer is this: "what are the threads doing, if they are not serving HTTP requests?" Here is some info to get you started with analysing thread dumps.
Thanks for the tips, I'll check these and see if I can find anything.
Erik Stackenland
Greenhorn
Joined: Apr 08, 2010
Posts: 3
posted
0
I did find something. When running jstack I had 40 HTTP threads that were all blocked on a synchronized method. However I could not find a race condition or similar that would explain it. I have rewritten the method to synchronize only the critical part of the code instead of the complete method, so I hope this helps.
Thanks again!
I agree. Here's the link: http://ej-technologies/jprofiler - if it wasn't for jprofiler, we would need to
run our stuff on 16 servers instead of 3.
subject: Tomcat hangs / locks up after container reload