Professional Documents
Culture Documents
Apache Tomcat
Mark Thomas
April 2009
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Who am I?
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 2
Agenda
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 3
Agenda
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 4
The process
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 5
Common errors
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 6
Agenda
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 7
Tomcat tuning
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 8
Agenda
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 9
Production logging
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 10
Production logging
becomes
.handlers = 1catalina.org.apache.juli.FileHandler
To add rotation
1catalina.java.util.logging.FileHandler.pattern =
${catalina.base}/logs/catalina.%g.log
1catalina.java.util.logging.FileHandler.limit =
20000000
1catalina.java.util.logging.FileHandler.count = 5
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 11
Agenda
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 12
Connector tuning
Depends on
your application usage patterns
your network
TCP connections
HTTP transactions
HTTP Keep-Alive
SSL
Additional considerations for load balancing
Layer 4 or Layer 7
Connection pools
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 13
Connector tuning
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 14
Connector tuning
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 15
Connector tuning
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 16
Which connector?
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 17
Which connector?
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 18
Which connector?
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 19
Connector tuning
maxThreads
maximum number of concurrent requests
for BIO, maximum number of open/active connections
typical values 200 to 800
400 is a good starting value
heavy CPU usage → decrease
light CPU usage → increase
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 20
Connector tuning
maxKeepAliveRequests
typical values 1 or 100
maximum number of HTTP requests per TCP
connection
set to 1 to disable keep alive
disable for BIO with very high concurrency, layer 4
load balancer, no SSL
enable for SSL, APR/NIO, layer 7 load balancer
Note BIO connector automatically disables keep alive
when concurrent connections reach 75% of
maxThreads
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 21
Connector tuning
connectionTimeout
typical value 3000
default of 20000 is too high for production use
also used for keep alive time-out
increase for slow clients
increase for layer 7 load balancer with connection pool
and keep alive on
decrease for faster time-outs
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 22
Agenda
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 23
Content cache tuning
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 24
Agenda
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 25
JVM tuning
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 26
JVM tuning
-Xms/-Xmx
Used to define size of Java heap
Aim to set as low as possible
Setting too high can cause wasted memory and long
GC cycles
-XX:NewSize/-XX:NewRatio
Set to 25-33% of total Java heap
Setting too high or too low leads to inefficient GC
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 28
JVM tuning: ideal garbage collection
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 29
JVM tuning: garbage collection
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 30
JVM tuning: garbage collection
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 31
Agenda
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 32
Scaling Tomcat
Load balancing
Routing requests to multiple Tomcat instances
Clustering
Sharing state between Tomcat instances for fail-over
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 33
Scaling Tomcat
Simplest configuration
1 * httpd
2 * Tomcat instances
mod_proxy_http
Considerations
state management
fail over
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 34
Scaling Tomcat
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 35
Scaling Tomcat
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 36
Scaling Tomcat
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 37
Scaling Tomcat
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 38
Scaling Tomcat
Fail over
Session replication asynchronous by default so usually
used with sticky sessions
Single line configuration for defaults
Uses multicast for node discovery
Will need additional configuration for production use
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 39
Agenda
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 40
Hints and tips
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 41
Questions?
mark.thomas@springsource.com
http://www.springsource.com/webinars
markt@apache.org
users@tomcat.apache.org
Copyright 2009 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 42