0

Sorry about double post. Actually I want to move my question on StackOverflow to ServerFault but it seems like I can't do it. Below is my question:

I have a web application and required load balancing in Tomcat. My hardware spec is 5 unit of 32 GB RAM quad-core processors 64 bit OS.

Should I have

  1. 5 Tomcats, one in each machine with -Xmx around 30GB and higher maxThreads
  2. A bigger number of Tomcats with lower -Xmx, e.g. 25 Tomcats, 5 in each machine with -Xmx around 6GB and default maxThreads

I have load balancer using mod_proxy_balancer before Tomcats. Let assume there is no bottle neck at database layer to simplify the situation. For suggestion #1, the author for http://www.theserverside.com/news/1363681/Scaling-Your-Java-EE-Applications said 12GB max ram cause high pause time during gc and recommend to use only 3GB. He did not share his gc setting so I am not sure can it be fine-tuned further.

Let me know if you need more info.

Thanks.

1 Answer 1

0

All other things being equal, a larger heap size in your JVM will only defer the cost of reference issues created by the container and/or your code. Your pauses may take longer to manifest, but when they arrive they will almost certainly stop the world for a (much) longer time.

So long as you are load-balancing in this manner, I generally prefer to bind each Tomcat instance to a subset of processors, measure the heap demand of my applications in testing, then allow for some kind of headroom. Better to monitor and manage your memory demand on an ongoing than try to factor it out with the maximum possible space.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .