Der Server hat 48GB RAM und 8 Cores (Intel XEON E5507) und es laufen darauf zwei Projekte (16GB und 27GB Speicherplatz).
Hier die Zahlen aus dem Monitoring zum VM Speicher:
Code Cache | | NON_HEAP | 48 MB | 30.308 MB | 2.438 MB | 31.125 MB |
Par Eden Space | | HEAP | 1.953 GB | 1.394 GB | 1.953 GB | 1.953 GB |
Par Survivor Space | | HEAP | 1.953 GB | 298.872 MB | 1.953 GB | 1.953 GB |
CMS Old Gen | | HEAP | 9.766 GB | 7.034 GB | 5.859 GB | 9.634 GB |
CMS Perm Gen | | NON_HEAP | 500 MB | 77.78 MB | 500 MB | 500 MB |
Total | | TOTAL | 14.207 GB | 8.825 GB | 10.256 GB | 14.059 GB |
Hier mal ein Auszug aus unserer fs-wrapper.conf
# Java command (JDK needed, not JRE)
# absolute path or just "java" when environment variable PATH is set correctly
wrapper.java.command=/usr/java/jdk1.6.0_23/bin/java
# Maximum Java Heap Size
# set in MByte with maxmemory=MBYTESNUMBER
# set in percent of total physical RAM with maxmemory.percent=PERCENTNUMBER
wrapper.java.maxmemory=16000
# Initial Java Heap Size.
# Same syntax as Maximem Java Heap Size.
# Set to value of about 75% of Maximum Java Heap Size.
wrapper.java.initmemory=12000
# Java parameters.
# Continuous enumeration is needed!
# Empty values after the "=" sign are allowed.
wrapper.java.additional.1=-Djava.awt.headless=true
wrapper.java.additional.2=-Djava.security.auth.login.config=conf/fs-jaas.conf
wrapper.java.additional.3=-Djava.security.policy=conf/fs-server.policy
wrapper.java.additional.4=-Dfile.encoding=UTF-8
wrapper.java.additional.5=-Xshare:off
wrapper.java.additional.6=-Djava.net.preferIPv4Stack=true
wrapper.java.additional.7=
wrapper.java.additional.8=
wrapper.java.additional.9=
# Select 64bit VM on Solaris with -d64:
#wrapper.java.additional.10=-d64
wrapper.java.additional.10=
# Java parameters for garbage collection
# value of -Xmn should be set to 50% of wrapper.java.initmemory
wrapper.java.additional.11=-Xmn6000m
wrapper.java.additional.12=-XX:PermSize=500m
wrapper.java.additional.13=-XX:MaxPermSize=500m
wrapper.java.additional.14=-XX:+DisableExplicitGC
wrapper.java.additional.15=-XX:SoftRefLRUPolicyMSPerMB=20
wrapper.java.additional.16=-XX:+UseParNewGC
wrapper.java.additional.17=-XX:+UseConcMarkSweepGC
wrapper.java.additional.18=-XX:+CMSIncrementalMode
wrapper.java.additional.19=-XX:+CMSParallelRemarkEnabled
wrapper.java.additional.20=-XX:+CMSClassUnloadingEnabled
wrapper.java.additional.21=-XX:SurvivorRatio=1
wrapper.java.additional.22=-XX:TargetSurvivorRatio=80
wrapper.java.additional.23=-XX:InitialTenuringThreshold=15
wrapper.java.additional.24=-XX:-UseLargePages
wrapper.java.additional.25=-Djava.rmi.dgc.leaseValue=3600000
wrapper.java.additional.26=-Dsun.rmi.dgc.server.gcInterval=3600000
wrapper.java.additional.27=-Dsun.rmi.dgc.client.gcInterval=3600000
wrapper.java.additional.28=
wrapper.java.additional.29=
wrapper.java.additional.30=
wrapper.java.additional.31=
Das Verwenden von "UseParNewGC" hat anscheinend eine Verbesserung gebracht.
Im Admin-Handbuch steht, dass man bei Werten für maxmemory > 10GB vorsichtig sein sollte.
Welche Optimierungen können noch vorgenommen werden ?