And here is our most recent experience with G1, although not with Solr, but with HBase:
http://blog.sematext.com/2013/06/24/g1-cms-java-garbage-collector/ Otis -- Solr & ElasticSearch Support -- http://sematext.com/ Performance Monitoring -- http://sematext.com/spm On Fri, Jun 21, 2013 at 11:33 AM, Walter Underwood <wun...@wunderwood.org> wrote: > On 6/20/2013 10:22 PM, William Bell wrote: >> It would be good to see some CMS configs too... Can you send your java >> params? > > Here is what we use in production. We run multiple collections with small > documents. One is 3M docs, one is 9M, one is 2M, and the other three are > small. We use Amazon m1.xlarge instances (4CPU, 15GB). > > These options were developed with our load test. That is based on a full day > of queries. We use JMeter to send queries at a constant rate that takes the > CPU to between 50% and 75% busy. We measure 95th and 99th percentiles for > response time. > > We enable ExplicitGCInvokesConcurrent because some monitoring software was > calling System.gc() to get accurate memory numbers. That was causing notable > pauses in service and messing up our 99th percentile. Alternatively, you > could disable those entirely with the flag DisableExplicitGC. > > The new size is large so that all the allocations needed to handle a single > request can fit in new space. We really do not want per-request data being > allocated in tenured space. New needs to be big enough to handle multiple > simultaneous requests. > > export CATALINA_OPTS="$CATALINA_OPTS -d64" > export CATALINA_OPTS="$CATALINA_OPTS -server" > export CATALINA_OPTS="$CATALINA_OPTS -Xms8g" > export CATALINA_OPTS="$CATALINA_OPTS -Xmx8g" > export CATALINA_OPTS="$CATALINA_OPTS -XX:NewSize=2048m" > export CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=256m" > export CATALINA_OPTS="$CATALINA_OPTS -XX:+UseConcMarkSweepGC" > export CATALINA_OPTS="$CATALINA_OPTS -XX:+UseParNewGC" > export CATALINA_OPTS="$CATALINA_OPTS -XX:+ExplicitGCInvokesConcurrent" > export CATALINA_OPTS="$CATALINA_OPTS -verbose:gc" > export CATALINA_OPTS="$CATALINA_OPTS -XX:+PrintGCDetails" > export CATALINA_OPTS="$CATALINA_OPTS -XX:+PrintGCTimeStamps" > export CATALINA_OPTS="$CATALINA_OPTS -XX:-TraceClassUnloading" > export CATALINA_OPTS="$CATALINA_OPTS -Xloggc:$CATALINA_HOME/logs/gc.log" > export CATALINA_OPTS="$CATALINA_OPTS -XX:+HeapDumpOnOutOfMemoryError" > export CATALINA_OPTS="$CATALINA_OPTS -XX:HeapDumpPath=$CATALINA_HOME/logs/" > > We used to include these options, but they default to enabled in Java 1.7 > Update 17. > > -XX:+DoEscapeAnalysis > -XX:+CMSParallelRemarkEnabled > -XX:+UseCompressedOops > > wunder > >