sijie closed pull request #1342: Provide memory & gc options in bookkeeper script URL: https://github.com/apache/bookkeeper/pull/1342
This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/.gitignore b/.gitignore index 15ad27f7d..6a111c34e 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,6 @@ lib/ log/ target/ dependency-reduced-pom.xml + +# Logs +logs/ diff --git a/bin/bookkeeper b/bin/bookkeeper index 3ceefe537..e2bd30eed 100755 --- a/bin/bookkeeper +++ b/bin/bookkeeper @@ -207,20 +207,56 @@ if [ -z "$BOOKIE_LOG_CONF" ]; then BOOKIE_LOG_CONF=$DEFAULT_LOG_CONF fi +BOOKIE_LOG_DIR=${BOOKIE_LOG_DIR:-"$BK_HOME/logs"} +if [ ! -d ${BOOKIE_LOG_DIR} ]; then + mkdir ${BOOKIE_LOG_DIR} +fi + +# Configure JVM settings +DEFAULT_BOOKIE_GC_OPTS="-XX:+UseG1GC \ + -XX:MaxGCPauseMillis=10 \ + -XX:+ParallelRefProcEnabled \ + -XX:+UnlockExperimentalVMOptions \ + -XX:+AggressiveOpts \ + -XX:+DoEscapeAnalysis \ + -XX:ParallelGCThreads=32 \ + -XX:ConcGCThreads=32 \ + -XX:G1NewSizePercent=50 \ + -XX:+DisableExplicitGC \ + -XX:-ResizePLAB" +DEFAULT_BOOKIE_GC_LOGGING_OPTS="-XX:+PrintGCDetails \ + -XX:+PrintGCApplicationStoppedTime \ + -XX:+UseGCLogFileRotation \ + -XX:NumberOfGCLogFiles=5 \ + -XX:GCLogFileSize=64m \ + -Xloggc:${BOOKIE_LOG_DIR}/gc_%p.log" +BOOKIE_MAX_HEAP_MEMORY=${BOOKIE_MAX_HEAP_MEMORY:-"1g"} +BOOKIE_MIN_HEAP_MEMORY=${BOOKIE_MIN_HEAP_MEMORY:-"1g"} +BOOKIE_MAX_DIRECT_MEMORY=${BOOKIE_MAX_DIRECT_MEMORY:-"2g"} +BOOKIE_MEM_OPTS=${BOOKIE_MEM_OPTS:-"-Xms${BOOKIE_MAX_HEAP_MEMORY} -Xmx${BOOKIE_MIN_HEAP_MEMORY} -XX:MaxDirectMemorySize=${BOOKIE_MAX_DIRECT_MEMORY}"} +BOOKIE_GC_OPTS=${BOOKIE_GC_OPTS:-"${DEFAULT_BOOKIE_GC_OPTS}"} +BOOKIE_GC_LOGGING_OPTS=${BOOKIE_GC_LOGGING_OPTS:-"${DEFAULT_BOOKIE_GC_LOGGING_OPTS}"} + BOOKIE_CLASSPATH="$BOOKIE_JAR:$BOOKIE_CLASSPATH:$BOOKIE_EXTRA_CLASSPATH" BOOKIE_CLASSPATH="`dirname $BOOKIE_LOG_CONF`:$BOOKIE_CLASSPATH" OPTS="$OPTS -Dlog4j.configuration=`basename $BOOKIE_LOG_CONF`" OPTS="-cp $BOOKIE_CLASSPATH $OPTS" -OPTS="$OPTS $BOOKIE_EXTRA_OPTS" - # Disable ipv6 as it can cause issues OPTS="$OPTS -Djava.net.preferIPv4Stack=true" +# Disable netty leak detection +NETTY_LEAK_DETECTION_LEVEL=${NETTY_LEAK_DETECTION_LEVEL:-"disabled"} +OPTS="$OPTS -Dio.netty.leakDetectionLevel=${NETTY_LEAK_DETECTION_LEVEL}" +NETTY_RECYCLER_MAXCAPACITY=${NETTY_RECYCLER_MAXCAPACITY:-"1000"} +OPTS="$OPTS -Dio.netty.recycler.maxCapacity.default=${NETTY_RECYCLER_MAXCAPACITY}" +NETTY_RECYCLER_LINKCAPACITY=${NETTY_RECYCLER_LINKCAPACITY:-"1024"} +OPTS="$OPTS -Dio.netty.recycler.linkCapacity=${NETTY_RECYCLER_LINKCAPACITY}" + +OPTS="$OPTS $BOOKIE_MEM_OPTS $BOOKIE_GC_OPTS $BOOKIE_GC_LOGGING_OPTS $BOOKIE_PERF_OPTS $BOOKIE_EXTRA_OPTS" # log directory & file BOOKIE_ROOT_LOGGER=${BOOKIE_ROOT_LOGGER:-"INFO,CONSOLE"} -BOOKIE_LOG_DIR=${BOOKIE_LOG_DIR:-"$BK_HOME/logs"} BOOKIE_LOG_FILE=${BOOKIE_LOG_FILE:-"bookkeeper-server.log"} #Configure log configuration system properties diff --git a/conf/bkenv.sh b/conf/bkenv.sh index 8900b3df4..0cb39ecad 100644 --- a/conf/bkenv.sh +++ b/conf/bkenv.sh @@ -32,6 +32,33 @@ # Logs location # BOOKIE_LOG_DIR= +# JVM memory options + +# BOOKIE_MAX_HEAP_MEMORY=1g +# BOOKIE_MIN_HEAP_MEMORY=1g +# BOOKIE_MAX_DIRECT_MEMORY=2g +# BOOKIE_MEM_OPTS= + +# JVM GC options +# BOOKIE_GC_OPTS= + +# JVM GC logging options +# BOOKIE_GC_LOGGING_OPTS= + +# JVM performance options +# BOOKIE_PERF_OPTS="-XX:+PerfDisableSharedMem -XX:+AlwaysPreTouch -XX:-UseBiasedLocking" + +# Netty options + +# netty buffer leak detection level - {@link http://netty.io/wiki/reference-counted-objects.html#wiki-h3-11} +# NETTY_LEAK_DETECTION_LEVEL= + +# netty recycler max capacity +# NETTY_RECYCLER_MAXCAPACITY= + +# netty recycler link capacity +# NETTY_RECYCLER_LINKCAPACITY= + # Extra options to be passed to the jvm # BOOKIE_EXTRA_OPTS= ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services