Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin


Java applications like JIRA and Confluence run in a "Java virtual machine" (JVM), instead of directly within an operating system. When started, the Java virtual machine is allocated a certain amount of memory, which it makes available to applications like JIRA. By default, Java virtual machines are allocated 64Mb of memory, no matter how many gigabytes of memory your server may actually have available. 64Mb is inadequate for medium to large JIRA installations, and so this needs to be increased.

On this page:

Table of Contents

Anchor
not_enough_memory
not_enough_memory

단계 1: 진단

Expand
Expand to see diagnosis section
Expand to see diagnosis section

Determine type of error message

Look in the atlassian-confluence.log to see which type of OutOfMemory Error you're receiving. There are three common messages:

  1. Heap Space
  2. Perm Gen Space
  3. GC Overhead
Tip

This document discusses increasing memory to address PermGen and Heap space errors. Follow the links above to assess root causes for each issue. For GC Overhead, refer to Confluence Crashes Due to 'java.lang.OutOfMemoryError GC overhead limit exceeded'.

Determine Confluence's usage patterns

In JIRA, go to Administration » System » System Info, and look at the memory graph during times of peak usage:

(info) This server has been allocated a maximum of 650Mb and a minimum of 256m. You can see the minimum displayed here; if you're trying to see whether your settings are being picked up, this is where to look.

Determine available system memory

Panel
bgColor#EAECFF
titleOn Windows

From the Close Programs Dialogue (Press ctrl-alt-delete), select the Performance tab:

(info) The amount marked Available is the amount in kilobytes you have free to allocate to Confluence. On this server we should allocate at most 214Mb.

Panel
bgColor#EAECFF
titleOn Linux

Run cat /proc/meminfo to view the memory usage.

Setting the -Xmx above the available amount on the server runs the risk of OutOfMemoryErrors due to lack of physical memory. If that occurs the system will use swap space, which greatly decreases performance.

Anchor
guidance
guidance

Guidance

The default values supplied with Confluence stand-alone are sufficient for most installations. Please refer to How To Fix Out Of Memory Errors By Increasing Available Memory and How To Fix Out Of Memory Errors By Increasing Available Memory for a discussion.

단계 2: 가능한 메모리 늘리기


Info

We aren't really able to give a concrete recommendation for the amount of memory to allocate, because that will depend greatly on your server setup, the size of your user base, and their behaviour. You will need to find a value that works for you, ie no noticeable GC pauses, and no OutOfMemory errors.

For reference, the 3 most common parameters used to change the memory (heap) allocation are:

  • Xms - the minimum size of the heap
  • Xmx - the maximum size of the heap
  • -XX:MaxPermSize - the maximum size of PermGen

 If you do decide to increase the memory settings, there are a few general guidelines to follow.

  • Increase Xmx in small increments (eg 512mb at a time), until you no longer experience the OutOfMemory error. This is because increasing the heap beyond the capabilities of your server to adequately Garbage Collect can cause other problems (eg performance/freezing)
  • If your error is java.lang.OutOfMemoryError: PermGen space, increase the -XX:MaxPermSize parameter in 256mb increments until the error stops occurring.

  • If your error does not reference PermGen, there is no need to increase it. In a simplistic explanation, PermGen is used to store classes, and is generally quite static in size. More info here.
  • Consider setting Xms and Xmx to the same value, as this can decrease the time GC takes to occur, as it will not attempt to resize the heap down on each collection.

(warning) See our Garbage Collection (GC) Tuning Guide for more detailed information.

Linux

Expand
Expand to see Linux instructions
Expand to see Linux instructions
Panel
bgColor#EAECFF
titleTo increase heap or perm gen space memory in Linux installations,
  1. Shutdown Confluence
  2. From <confluence-install>/bin (Stand-alone) or <Tomcat-home>/bin (EAR-WAR installation), open setenv.sh (you can create this file in the EAR/WAR version).
  3. Find the section
  • CATALINA_OPTS="-Xms1024m -Xmx1024m -XX:+UseG1GC $CATALINA_OPTS" in Confluence 5.8 or above 
  • CATALINA_OPTS="$CATALINA_OPTS -Xms1024m -Xmx1024m -XX:MaxPermSize=256m -XX:+UseG1GC" in Confluence 5.6 or 5.7
  • JAVA_OPTS="-Xms256m -Xmx512m -XX:MaxPermSize=256m in previous versions
  1. See Diagnosis above and enter the appropriate values. Xmx is maximum, Xms is minimum, and MaxPermSize is PermGen.
  2. Start Confluence

Windows (starting from .bat file)

Expand
Expand to see Windows .bat file instructions
Expand to see Windows .bat file instructions
Panel
bgColor#EAECFF
titleTo Configure System Properties in Windows Installations When Starting from the .bat File,
  1. Shutdown Confluence
  2. From <confluence-install>/bin (Stand-alone) or <Tomcat-home>/bin (EAR-WAR installation), open setenv.bat.
  3. Find the section
    • CATALINA_OPTS="-Xms1024m -Xmx1024m -XX:+UseG1GC $CATALINA_OPTS" in Confluence 5.8 or above 
    • CATALINA_OPTS="$CATALINA_OPTS -Xms1024m -Xmx1024m -XX:MaxPermSize=256m -XX:+UseG1GC" in Confluence 5.6 or 5.7
    • JAVA_OPTS="-Xms256m -Xmx512m -XX:MaxPermSize=256m in previous versions
  4. See Diagnosis above and enter the appropriate values. Xmx is maximum, Xms is minimum, and MaxPermSize is PermGen.
  5. Start Confluence

Windows Service

Expand
Expand to see Windows Service instructions
Expand to see Windows Service instructions

There are two ways to configure system properties if you How To Fix Out Of Memory Errors By Increasing Available Memory - either via command line or in the Windows Registry

Anchor
commandline
commandline

Setting Properties for Windows Services via Command Line

Panel
bgColor#EAECFF
titleSetting Properties for Windows Services via Command Line
  1. Identify the name of the service that Confluence is installed as in Windows ( Control Panel > Administrative Tools > Services ):

    (info) In the above example, the SERVICENAME is: JIRA030908110721
  2. Open the command window from Start >> Run >> type in 'cmd' >> Enter
  3. cd to the bin directory of your Confluence instance, or the bin directory of your Tomcat installation if your are running Confluence EAR/WAR.
  4. Run:

    Code Block
    tomcat6w //ES//%SERVICENAME%
    

    .
    (info) In the above example, it would be tomcat6w //ES//JIRA030908110721 (this is a JIRA screenshot, but the same applies to Confluence)

  5. Click on the Java tab to see the list of current start-up options:
  6. Set the maximum memory allocation here
  7. Also add -XX:MaxPermSize=384m to the java options section. 

Anchor
registry
registry

Setting Properties for Windows Services via the Windows Registry

In some versions of Windows, there is no option to add Java variables to the service. In these cases, you must add the properties by viewing the option list in the registry.

Panel
bgColor#EAECFF
titleTo Set Properties for Windows Services via the Windows Registry,
  1. Go to Start >> Run, and run "regedit32.exe"
  2. Find the Services entry:
    32-bit: HKEY_LOCAL_MACHINE >> SOFTWARE >> Apache Software Foundation >> Procrun 2.0 >> Confluence
    64-bit: HKEY_LOCAL_MACHINE >> SOFTWARE >> Wow6432Node >> Apache Software Foundation >> Procrun 2.0 >> Confluence
  3. To change existing properties, especially increasing Xmx memory, double-click the appropriate value.
  4. To change additional properties, double-click options. Note: Make sure to add only one argument per line.
  5. Modify the memory allocations here (i.e. -XX:MaxPermSize=384m).

단계 3: 세팅 확인하기

To verify what settings are in place, check Viewing System Information. You should see a section called "Java Runtime Arguments".

Expand
Expand to see verification instructions
Expand to see verification instructions

(info) Look for Xmx (maximum) and Xms (minimum) settings.
Alternatively, on Linux, run ps -aux | grep java to see the environment parameters.

Code Block
ps -aux | grep java

관련내용

Expand
titleExpand to see related content
Wiki Markup
{dynamiccontentbylabel:showLabels=false|showSpace=false}
Panel
borderColor#ccc
bgColor#FFFFCC
titleBGColor#FFFF99
borderStylesolid
titleHelp us improve!
Wiki Markup
{kbsurvey}