Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Recommended Core Settings

Java Settings

These are some recommended baseline settings and flags for Java 7 on a 6GB system.  For higher traffic systems, suggest 5GB to 6GB of heap on an 8GB system.  uPortal can run with a 2GB heap on a 4GB system (convenient for dev) and even less for local development, but it will spend significantly more time garbage collecting and cannot handle sudden large spikes in traffic.  With a 2GB heap or smaller it is recommended to not set NewSize and MaxNewSize and leave the defaults.

Code Block
# Print computed flags after startup
-XX:+PrintCommandLineFlags

# Memory Configuration
-server -d64                   # switch to 64bit server mode
-Xms4096m                      # Set initial heap sizes
-Xmx4096m                      # Set max heap size
-XX:NewSize=2048m              # Set initial new size to 1/2 the initial heap
-XX:MaxNewSize=2048m           # Specify the max new size, generally allow the JVM to use up to 1/2 the max heap
-XX:MaxGCPauseMillis=250       # GC Pauses up to 250ms aren't bad, have ergonomics try and keep pauses below this level
-XX:+UseConcMarkSweepGC        # Force CMS for the collector
-XX:+CMSIncrementalMode        # Use incremental mode since minor CPU overhead is better than potential pauses
-XX:+UseAdaptiveGCBoundary     # Lets the JVM adjust the young/old ratio

#-XX:+UseParNewGC              # ParNewGC is the default when using the CMS collector
# Enable perm-gen class unloading (needed with UseConcMarkSweepGC)
-XX:+CMSClassUnloadingEnabled

# Set a large enough perm gen.  You can track how much you are using with jvisualvm, jconsole, or looking at the output in gc.log
-XX:PermSize=250m
-XX:MaxPermSize=400m

JVM Logging Options

The JVM can be configured to log details about garbage collection and classloading that may be helpful when analyzing portal performance.  It is also recommended for production systems.  It can be analyzed using https://github.com/chewiebug/GCViewer

Code Block

# GC Logging
-verbose:gc
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
-XX:+PrintTenuringDistribution
-XX:+PrintAdaptiveSizePolicy
-XX:AdaptiveSizePolicyOutputInterval=1
-Xloggc:/my/upXloggc:${TOMCAT_HOME}/logs/gc.log

# Optional Classloading Logging
-verbose:class

JVM Monitoring Options

Code Block

# Enable JMX Remote Monitoring
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.password.file=/my/password
-Dcom.sun.management.jmxremote.access.file=/my/access

JVM Debugging Options

Code Block

# Debuging
-Xdebug
-Xrunjdwp:transport=dt_socket,address=7000,server=y,suspend=n

...