Tomcat
De whats Wiki
Optimització a partir del java 1.6
JAVA_OPTS="-server -Xmx1024m -Xms256m"
Augmentar el límit de nombre de fitxer oberts
ulimit -n 2048
reloadable false
When reloadable is true Tomcat tries to detect web application class changes and automatically reload any classes which change. Setting this to false removes a lot of unnecessary overhead in production.
liveDeploy false
liveDeploy controls whether your webapps directory is periodically checked for new web application directories and war files. This is done using a background thread. Set this to false and use the manager application or ant deploy tasks instead.
debug 0
Disable all debug output, unnecessary logging just adds overhead.
swallowOutput true
This makes sure all output to stdout or stderr for a web application gets directed to the web application log rather than the console or catalina.out. This makes it easier to troubleshoot web application problems.
minProcessors
Set to number of processors required for normal request volume.
maxProcessors
Set to twice the max number of concurrent requests expected.
acceptCount
Don't set too high, this sets the number of pending requests awaiting processing. In my opinion it is better to deny a few requests than overload Tomcat and cause problems for all requests.
enableLookups
DNS lookups can add significant delays.
development false
Disables JSP page out of date checks on each request and enables JSP background recompiles. development is set to true by default.
JSP custom tag pooling
Object pooling of classes which implement custom tags significantly improves performance of JSP pages which use custom tag libraries. JSP custom tag pooling is enabled by default.
Use fork for JSP page compiles
The JVM compiler javac has known memory leaks. Eliminates JVM memory usage and GC overhead of javac by configuring Jasper to fork javac when compiling JSP pages.
Garbage collector debug info
Use java –verbose:gc startup argument to collect GC data.
Appendix A -- conf/server.xml Tomcat 4.1 configuration - any 2003
<Server port="8005" shutdown="SHUTDOWN" debug="0"> <Service name="Tomcat-Apache"> <Connector className="org.apache.ajp.tomcat4.Ajp13Connector" port="8009" minProcessors="50" maxProcessors="375" acceptCount="10" connectionTimeout="0" debug="0"/> <Engine name="Tomcat-Apache" defaultHost="www.myhost.com" debug="0"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true"/> <Host name="www.myhost.com" debug="0" appBase="webapps" swallowOutput="true" unpackWARs="true" autoDeploy="true" liveDeploy="false"> <Realm className="org.apache.catalina.realm.JDBCRealm" debug="0" driverName="org.gjt.mm.mysql.Driver" connectionURL="jdbc:mysql://localhost/realm?autoReconnect=true" connectionName="admin" connectionPassword="password" userTable="users" userNameCol="user_name" userCredCol="user_pass" userRoleTable="user_roles" roleNameCol="role_name" digest="MD5" /> <Logger className="org.apache.catalina.logger.FileLogger" prefix="myhost_log-" suffix=".txt" timestamp="true"/> <DefaultContext debug="0" reloadable="false" swallowOutput="true"> <Resource name="jdbc/data" auth="CONTAINER" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/data"> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <parameter><name>username</name><value>username</value></parameter> <parameter><name>password</name><value>password</value></parameter> <parameter> <name>driverClassName</name> <value>org.gjt.mm.mysql.Driver</value></parameter> <parameter> <name>url</name> <value>jdbc:mysql://localhost/myhost?autoReconnect=true</value> </parameter> <parameter> <name>maxIdle</name> <value>50</value> </parameter> <parameter> <name>maxActive</name> <value>200</value> </parameter> <parameter> <name>maxWait</name> <value>10000</value> </parameter> <parameter> <name>logAbandoned</name> <value>true</value> </parameter> <parameter> <name>removeAbandoned</name> <value>true</value> </parameter> <parameter> <name>removeAbandonedTimeout</name> <value>300</value> </parameter> </ResourceParams> </DefaultContext> ApacheCon November 17, 2003 Tomcat Performance Tuning and Troubleshooting, Glenn Nielsen <Context path="/manager" docBase="/usr/local/kinetic/tomcat4/server/webapps/manager" debug="0" privileged="true"> <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1"/> </Context>
</Host>
</Engine> </Service> </Server>
links
Java performance
http://java.sun.com/performance/reference/whitepapers/tuning.html
Garbage collector
http://www.javaworld.com/javaworld/jw-01-2002/jw-0111-hotspotgc.html
