Have you noticed what a lack of information there is in the printed material (or on the web too, come to that!) on performance tuning Apache Tomcat? The subject came up briefly during the course that I completed yesterday, when we looked at the
changing the heap sizes and number of threads, and selecting
either the client or server JVM. Really it's one of those areas where I can't give you hard and fast rules for these parameters, and sometimes an apparantly contradictory setting will work wonders. For example, reducing the number of threads may increase performance as Tomcat concentrates on giving fast and furious service to a few customers at a time, rather that having hordes of them in the pipeline at the same time.
"Increase your cpu power, increase the memory" one of the books told us - and with the modern low price of hardware, that could be exactly the right message for some people. So could
"increase the bandwidth to the cpu" sometimes. But in each case, do check that you're pushing on the right bound. Looking at yesterday's case, the cpu was running at 100% and there was free memory available - so an extra few Gbytes would have sat idle; a move powerful cpu would have helped, as might
pulling other tasks off the same cpu.
"Should I
run multiple instances of Tomcat"? Maybe; on a single processor machine, it's going to be questionable whether you'll gain much. With multiple processors and one instance per processor, or with multiple hosts, then major throughput advances can be made. But once you have multiple instances of Tomcat running, you've got two extra complexites - how to share the load, and ensuring that the Tomcats stay syncronised in an appropriate way.
There's some
general load balancing and clustering information and some
more specific Apache load sharing information available via links. And whilst we don't run public Apache Tomcat tuning course, we have been known to cluster machines together, play with the settings, and bombard them with traffic to help a small group from a individual client understand the metrics of some of the factors I have mentioned. See
here for commercial details.
(written 2007-09-29 05:24:52)
Associated topics are indexed under
A654 - Web Application Deployment - Configuring and Controlling Tomcat [2163] CATALINA_OPTS v JAVA_OPTS - What is the difference? - (2009-05-09)
[2061] Tomcat 6 - Annotated Sample Configuration Files - (2009-03-01)
[2039] The Invoker - (2009-02-13)
[1994] tomcat-users.xml; what a difference a space made - (2009-01-16)
[1943] Port and Glasses - (2008-12-14)
[1762] WEB-INF (Tomcat) and .htaccess (httpd) - (2008-08-20)
[1553] Automatic startup and shutdown of Tomcat - (2008-02-24)
[1503] Web page (http) error status 405 - (2008-01-12)
[1351] Compressing web pages sent out from server. Is it worth it? - (2007-09-14)
[914] A practical example of roles - (2006-11-04)
[907] Browser -> httpd -> Tomcat -> MySQL. Restarting. - (2006-10-28)
[837] Tomcat - Shutdown port - (2006-08-18)
A656 - Web Application Deployment - More Tomcat Configuration [2272] Monitoring and loading tools for testing Apache Tomcat - (2009-07-07)
[1899] Virtual Hosting under Tomcat - an example - (2008-11-22)
[1718] Increasing Java Virtual Machine memory for Tomcat - (2008-07-24)
[466] Separating 'per instance' data from binaries and web sites - (2005-10-16)
[282] Short weekend - (2005-04-17)
A900 - Web Application Deployment - Tomcat - Extra Features [1939] mod_proxy_ajp and mod_proxy_balancer examples - (2008-12-13)
[1896] Virtual Hosts and Virtual Servers - (2008-11-20)
[1383] Monitoring mod_jk and how it is load balancing - (2007-10-07)
[1377] Load Balancing with Apache mod_jk (httpd/Tomcat) - (2007-10-02)
[1376] Choosing between mod_proxy and mod_rewrite - (2007-10-02)
[1121] Sharing the load with Apache httpd and perhaps Tomcat - (2007-03-29)
[1006] Apache httpd and Apache Tomcat together tips - (2006-12-24)
[934] Clustering, load balancing, mod_rewrite and mod_proxy - (2006-11-21)
Some other Articles
Maidenhead Coffee ChallengeNew Month, New Quarter, New LawsA taster PHP expression ...Hotel in Melksham at ChristmasApache Tomcat Performance TuningOne business, four different angles!Getting the local voice heardkorn tips - some useful korn shell techniquesawk - a powerful data extraction and manipulation toolKorn Shell scripts on the web