Tomcat

De whats Wiki

Dreceres ràpides: navegació, cerca

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