  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.


Benchmarking Tomcat
-------------------

Tomcat benchmarks are more than welcome, and people who are interested are
encouraged to post results.

This guide is designed to be a FAQ on how to configure Tomcat for maximum
performance.

- Please upgrade to the latest available version of the Tomcat branch you
  would like to benchmark. Small incremental performance improvements are often
  made in each release.

- Use the most recent JDK available whenever possible. Usually, results are
  dependent on the JDK, so results obtained with different JDK should not be
  compared directly.

- When benchmarking Jasper, set it in production mode. To do that, add a
  "development" init parameter (with value set to "false") in the Jasper
  section of $CATALINA_HOME/conf/web.xml. This increases maximum throughtput
  of JSPs by about 20%, as well as removing a synchronization point.

- When benchmarking a web application which creates sessions on each request,
  be careful about not exhausting memory by having too many active sessions. If
  a max number of sessions is set in the manager to avoid memory problems, this
  will lead to requests failing when session creation is denied. To avoid that,
  either limit the total number of requests, or increase the JVM memory.

- Do not enable access logging (unless that is required by the benchmark), 
  or any debug log.

- Please post the benchmark web application used along with the results, so
  that people may attempt to reproduce the results.

- Definition of a standard webapp workload may be desirable, and contibutors
  interested in doing that are welcome to discuss it on the Tomcat developer
  mailing list.
