Memory Configuration - Documentation topics on: configuration,memory,.

Memory Configuration

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
2GB 1536MB Testing/Development Community
4GB 2560MB Light Traffic Community
8GB 5120MB Medium Traffic Enterprise Std/Pro
16GB 10240MB High Traffic Enterprise Std/Pro/Prime
32GB 20480MB Very High Traffic Enterprise Std/Pro/Prime

These recommendations assume a dedicated dotCMS server, with the database running in different server.  If the database is running in the same server, enough RAM must reserved for proper database functioning. Please refer to your database documentation for memory requirements.
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/

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">

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.

If you are running a clustered installation and/or any custom plugins, we also recommend you make the following changes to configure the PermGen memory allocation:

-XX:PermSize=256m -XX:MaxPermSize=512m

the -XX:MaxPermSize parameter should exist in every install and only need changing like -Xmx, but the -XX:PermSize may or may not already exist depending on the dotCMS version. Make sure that the PermSize parameters are NOT specified twice as this could create configuration conflicts.