Appboard/old/memory configuration

Revision as of 15:59, 16 June 2013 by imported>Mike.berman (edits in conjunction with runtime options updates)

This page details some settings that the AppBoard system administrator can modify to allocate the proper amount of server memory to AppBoard.


Memory Tuning

Template-tip.png
If your system is experiencing lag or performance issues, or you see the error message "Out of heap space", you may want to allocate additional memory to the Java Virtual Machine.


The heap size is the amount of Java object storage memory the Java Virtual Machine (JVM) is allowed to allocate. By default enPortal / AppBoard size the maximum heap size (-Xmx) option to work on a system with 2GB minimum physical RAM. Please refer to the Runtime Options page for the current default settings and where to make changes to these values.


Tuning JAVA_MEMORY_MAX (-Xmx)

For a server dedicated to running enPortal / AppBoard allocate as much available physical memory as possible. It's important to avoid allocating too much memory however, as this may lead to the OS using swap memory (i.e. disk) further degrading system performance. Factor in memory the OS is using itself, other applications on the system, and the JAVA_PERM_SIZE_MAX setting too.

On 32-bit operating systems there is a theoretical limit of 4GB but in practice it depends. On 32-bit Windows systems the max -Xmx setting that will work is around 1.6GB. On 32-bit Linux systems it's closer to 3GB.

Tuning JAVA_PERM_SIZE_MAX (-XX:MaxPermSize)

Memory reserved for permanent generation is in addition to the -Xmx value configured above. If there are java.lang.OutOfMemoryError: PermGen space errors in the logs then it is necessary to increase this value.

Monitoring Garbage Collection

If you are experiencing a memory leak, and would like to carefully report on each garbage collection event, you can log this data to a file by using the -Xloggc:file Java Option. Each reported event will be preceeded by the time (in seconds) since the first garbage-collection event.

Always use a local file system for storage of this file to avoid stalling the JVM due to network latency.

To enable the logging you will have to edit the [INSTALL_HOME]/server/bin/setenv.bat (or setenv.sh on Linux/Unix). Normally this file shouldn't be edited however this is temporary and for debugging only.

  1. open the appropriate setenv.bat or setenv.sh file
  2. at the bottom where JAVA_OPTS is being set, at the very end of the string add:
    -Xloggc:logfile_location.txt
  3. save and restart enPortal / AppBoard