Memory Configuration documentation for the dotCMS Content Management System

You can configure how much memory dotCMS uses.  How much memory you assign to dotCMS depends on how much total memory the system has and what other applications or services are running in the same server.  For dedicated production servers, we recommend the following minimum configurations:

Available RAM Application Memory Instance Type License Type
8GB 4GB Testing/Development/Light Traffic Community/Enterprise
16GB 10GB Medium Traffic Enterprise/Multi-Node
32GB 23GB High Traffic Enterprise/Multi-Node

If you are running dotCMS as a deployed application under a 3rd party application server, you should ensure that the recommended amount of memory specified here is allocated to the dotCMS application in addition to any memory overhead required by the server itself. Please consult your application server vendor for specifics on tuning it's memory performance.

The amount of RAM dotCMS is configured using the standard -Xmx command line switch on server startup in one of three places, depending how dotCMS is started. 

In Linux or other Unix like operating systems this is done in /bin/startup.sh

In Windows this is done in /bin/startup.bat If dotCMS is started from the command line.  If dotCMS is configured as a service, the memory configuration is done in the wrapper.conf file. As an alternative to placing the memory setting directly in the startup script you may set JAVA_OPTS as an environment variable.

One thing to keep in mind when configuring dotCMS memory is that the connections you configure in your server.xml take up server memory that is seperate from dotCMS.  So for example lets say your server.xml has the following configuration

<connector port="80" uriencoding="UTF-8" maxthreads="75" minsparethreads="1" maxsparethreads="150" enablelookups="false" redirectport="8443" acceptcount="500" debug="0" connectiontimeout="20000" disableuploadtimeout="true">
</connector>

You would need to account for 75 connections in memory that is outside of the memory the dotCMS JVM already is taking.  Tomcat says it can take as much as 1.5 megs per connection but you should be safe if you leave at least 1 meg per maxthread.  Keep in mind if you use mutliple connectors, like a seperate 443(SSL) connector,  you must add the maxthreads for all of them up.