This Confluence has been LDAP enabled, if you are an ASF Committer, please use your LDAP Credentials to login. Any problems file an INFRA jira ticket please.

Page tree
Skip to end of metadata
Go to start of metadata

The main document is Performance Tips in the core documentation. Be sure to read and understand the comments in cocoon.xconf and associated component documentation.

See also: Lenya Performance.

See also: CocoonPerformanceResults for results/graphs of one stress testing exercise.


Please add other performance and tuning hints here. They will be merged into the main document:

  • Make sure you have lots of available memory (512 mb minimum).
  • Set the correct JDK memory settings: Xms512M -Xmx512M (both to the same).
  • Set the "maxobjects" (cocoon.xconf) of the transient-store to a high number if you have lots of memory available. It is set to 100 by default which may be too low (depends on your application). I use about 4000 to 8000. Seems to work. Check the samples/status page to ensure that it is not overloading (by reaching the max-objects limit).
  • Set the store-janitor's heapsize in cocoon.xconf higher (by default it is set to use only 64 mb).
  • Set the use-store attribute of the XSLT processor you are using to true.
  • Turn off subsitemap reloading (only for deployment!).
  • See WritingForCacheEfficiency.
  • See also StoreComponents.
  • Using FOP or Batik is more memory consuming.
  • Switch off reloading of flowscripts in cocoon.xconf, under //flow-interpreters/component-instance[[@name='javascript']
  • Upgrading to Java 5 and Tomcat 5.5 may result in a smaller memory footprint (approximately 25%) and noticeable performance gains.

Additional notes: When setting JDK memory remember that JVMs on most systems can only use upto 1800Meg (see http://www.theserverside.com/discussions/thread.jsp?thread_id=19442) I think sun systems can handle upto 4 gig, I'm not sure about all the 64 bit systems that are cropping up.

Another important change to configuration in the cocoon.xconf. It is related to use-persistent-cache:

<transient-store logger="core.store.transient">
   <parameter name="maxobjects" value="1000"/>
   <parameter name="use-persistent-cache" value="false"/>
 </transient-store>
  • No labels