I am running Tomcat 6 on a group of Linux servers behind a loadbalancer. This
setup was working fine when I ran Tomcat as root. However, when I moved to
jsvc, the production servers started to become unavailable within a couple of
hours, serving thousands of requests. I had to restart them to be online again,
only to get into the same issue in a couple of hours. When switched back to run
as root, things were fine again. I could find no errors in any logs.
I found that jsvc uses client JVM (the servers are server-class VMWare servers)
by default. I am suspecting when I ran as root (startup.sh), Tomcat used server
JVM that gave better performance, while jsvc performed worse with client JVM,
causing my maxThreads (150) to exhaust, acceptCount (100) to fill up and making
tomcat to deny requests. I am guessing if I make jsvc to use server JVM, my
problem will go away. I appreciate if someone can validate this theory or offer
other clues before I try this in production. Of course, I shall also try a
stress test case.
Thanks,
BV Prasad