Win a copy of Design for the Mind this week in the Design forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Tomcat hangs / locks up after container reload

 
Erik Stackenland
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I'm running Tomcat 6.0.18 on CentOS 5.3.

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.

Any ideas?




 
Ben Souther
Sheriff
Posts: 13411
Firefox Browser Redhat VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I would look at the perm-gen levels.

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.

 
Kees Jan Koster
JavaMonitor Support
Rancher
Posts: 251
5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Dear Erik,

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.

http://java-monitor.com/forum/showthread.php?t=616
http://java-monitor.com/forum/showthread.php?t=317

Kees Jan
 
Erik Stackenland
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks for the tips, I'll check these and see if I can find anything.
 
Erik Stackenland
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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!
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic