Dashboard > uPortal > Home > JVM Configurations
uPortal Log In   View a printable version of the current page.
JVM Configurations

Added by Eric Dalquist , last edited by Eric Dalquist on Aug 24, 2006  (view change)
Labels: 
(None)

Eric Dalquist at UW Madison has documented their work on tuning the JVM heap for uPortal uPortal Heap Tuning.

Who Hardware/Software JVM JVM Arguments
Unversity of Madison - Wisconsin Hardware Details
J2SE 1.5.0_06
# Memory configuration
JAVA_OPTS="-server"
JAVA_OPTS="$JAVA_OPTS -Xms1280m"
JAVA_OPTS="$JAVA_OPTS -Xmx1280m"
JAVA_OPTS="$JAVA_OPTS -XX:NewSize=640m"
JAVA_OPTS="$JAVA_OPTS -XX:MaxNewSize=640m"
JAVA_OPTS="$JAVA_OPTS -XX:SurvivorRatio=5"
JAVA_OPTS="$JAVA_OPTS -XX:TargetSurvivorRatio=90"
JAVA_OPTS="$JAVA_OPTS -XX:MaxTenuringThreshold=12"
JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC"
JAVA_OPTS="$JAVA_OPTS -XX:+CMSIncrementalMode"
JAVA_OPTS="$JAVA_OPTS -XX:+CMSIncrementalPacing"
JAVA_OPTS="$JAVA_OPTS -XX:+CMSParallelRemarkEnabled"
JAVA_OPTS="$JAVA_OPTS -XX:+UseParNewGC"
JAVA_OPTS="$JAVA_OPTS -XX:PermSize=64m"
JAVA_OPTS="$JAVA_OPTS -XX:MaxPermSize=64m"
JAVA_OPTS="$JAVA_OPTS -XX:+UseTLAB"

# Enable class unloading (needed with ConcMarkSweepGC
JAVA_OPTS="$JAVA_OPTS -XX:+CMSClassUnloadingEnabled"
JAVA_OPTS="$JAVA_OPTS -XX:+CMSPermGenSweepingEnabled"

# debug and memory tweaks to avoid Hotspot Compiler Failure
JAVA_OPTS="$JAVA_OPTS -XX:+PrintCompilation"
JAVA_OPTS="$JAVA_OPTS -XX:CodeCacheMinimumFreeSpace=2M"
JAVA_OPTS="$JAVA_OPTS -XX:ReservedCodeCacheSize=64M"
JAVA_OPTS="$JAVA_OPTS -XX:CompileCommandFile=/my/portal/bin/hotspot_compiler"

# Enable JMX Remote Monitoring
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=9000"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.password.file=/my/portal/bin/jmxremote.password"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.access.file=/my/portal/bin/jmxremote.access"

# turn on some debug for GC only print the distribution when doing tuning
JAVA_OPTS="$JAVA_OPTS -verbose:gc"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCTimeStamps"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails"
#JAVA_OPTS="$JAVA_OPTS -XX:+PrintTenuringDistribution"
JAVA_OPTS="$JAVA_OPTS -Xloggc:/my/portal/logs/portal/gc.log"

# Enable remote debugging port
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
Texas Tech University
RHEL, Dual Intel(R) Xeon(TM) 3.20GHz CPU 1Gb Ram, Tomcat 5.0.28
Java HotSpot(TM) Client VM (1.5.0_04-b05 mixed mode) -Xms256m
-Xmx512m
-Xloggc:/usr/local/tomcat/logs/tomcat_gc.log
-Djava.awt.headless=true
-Dsun.net.client.defaultReadTimeout=600000
-Dsun.net.client.defaultConnectTimeout=120000
University of the West of England
Sun Fire V440, Solaris 8, 4 X 1284mghz, 16Gb Ram, Apache 2, Tomcat 5.0
J2se 1.4.2_06
-Djava.awt.headless=true
-Dsun.awt.font.advancecache=off
-Xmx3072m
Memorial University of Newfoundland Sun Fire 880, Solaris 8, 4 x CPUs - 750 MHz
8 GB RAM, Tomcat 5.0.27
J2SE 1.4.1-b21 -server
-Xms768m
-Xmx1280m
-XX:MaxNewSize=128m
-XX:NewSize=128m
-XX:SurvivorRatio=2
-XX:-UseConcMarkSweepGC
-XX:+UseParNewGC
XX:ParallelGCThreads=8
University of British Columbia Sun V440, SunOS 5.9, 4x1.3Hgz ?, 8Gb, Apache 2.0.55, Tomcat 5.5.7, mod_jk 1.2.15 1.5.0_06-b05 -DmyUBC=prod2
-XX:PermSize=24m
-XX:+DisableExplicitGC
-XX:MaxGCPauseMillis=3000
-verbose:gc
-Xloggc:gc.start.08-05-2006_03:58:04.log
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintTenuringDistribution
-Xmx1536m
-Xms1536m
-Dcom.sun.management.jmxremote
-Dorg.jasig.portal.jmxPort=1234
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.password.file=jmxremote.password
Rutgers University
4 x Sun Fire v240 2x1GHz 4 GB RAM, Solaris 8, Tomcat 5.0.28, Apache 1.3.33, mod_jk 1.3
1.5.0_05-b05 # Use server hotspot compiler
-server

# We set heap min/max to same size for consistent results
-Xms2048m
-Xmx2048m

# Since uP is temp object intensive, we set new area to half heap
-XX:NewSize=1024m
-XX:MaxNewSize=1024m

# There are two survivor spaces:
#    a SurvivorRatio of 5 to a 1GB new space will yield
#    two ~100MB survivor spaces (~800MB for eden)
-XX:SurvivorRatio=5

# Keep each survivor space about 90% full
-XX:TargetSurvivorRatio=90

# Copy object between survivor space at most 16 times
-XX:MaxTenuringThreshold=16

# PermSize controls area of heap for Class/Method objects;
#   Dynamic class loading/reflection (e.g., JSP) may require more space
#   Note that this space is ABOVE and beyond the min/max heap size
-XX:PermSize=32m

# Just in case; don't let app code impact GC (System.gc() noop)
-XX:+DisableExplicitGC

# Only one of our boxes runs with gc logging turned on
-verbose:gc 
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintHeapAtGC
-XX:+PrintTenuringDistribution

# Following young/old GC algorithms are default since JDK 1.5.0
#-XX:+UseParNewGC
#-XX:+UseConcMarkSweepGC

# LDAP connection pooling
-Dcom.sun.jndi.ldap.connect.pool.protocol=ssl
-Dcom.sun.jndi.ldap.connect.pool.timeout=30000
-Dcom.sun.jndi.ldap.connect.pool.prefsize=10
-Dcom.sun.jndi.ldap.connect.pool.maxsize=100

# Properties set by Tomcat/Catalina
-Djava.endorsed.dirs=/u01/app/tomcat/common/endorsed
-Dcatalina.base=/u01/app/tomcat
-Dcatalina.home=/u01/app/tomcat
-Djava.io.tmpdir=/u01/app/tomcat/temp

# Disclaimer: your actual mileage may vary. Tuning was
# done under JDK 1.4.2.x which uses different young/old
# GC algorithms.
Powered by a free Atlassian Confluence Open Source Project License granted to Java Architectures Special Interest Group. Evaluate Confluence today.
Powered by Atlassian Confluence 2.7.3, the Enterprise Wiki. Bug/feature request - Atlassian news - Contact administrators