Merge pull request #297 from AndreasMager/gc1

Gc1 garbage collector added to start scripts
This commit is contained in:
Andrea Selva
2017-04-20 14:14:40 +02:00
committed by GitHub
2 changed files with 130 additions and 49 deletions
+87 -45
View File
@@ -1,45 +1,87 @@
@ECHO OFF @ECHO OFF
rem # rem #
rem # Copyright (c) 2012-2015 Andrea Selva rem # Copyright (c) 2012-2015 Andrea Selva
rem # rem #
echo " " echo " "
echo " ___ ___ _ _ ___ ________ _____ _____ " echo " ___ ___ _ _ ___ ________ _____ _____ "
echo " | \/ | | | | | | \/ | _ |_ _|_ _| " echo " | \/ | | | | | | \/ | _ |_ _|_ _| "
echo " | . . | ___ __ _ _ _ ___| |_| |_ ___ | . . | | | | | | | | " echo " | . . | ___ __ _ _ _ ___| |_| |_ ___ | . . | | | | | | | | "
echo " | |\/| |/ _ \ / _\ | | | |/ _ \ __| __/ _ \ | |\/| | | | | | | | | " echo " | |\/| |/ _ \ / _\ | | | |/ _ \ __| __/ _ \ | |\/| | | | | | | | | "
echo " | | | | (_) | (_| | |_| | __/ |_| || __/ | | | \ \/' / | | | | " echo " | | | | (_) | (_| | |_| | __/ |_| || __/ | | | \ \/' / | | | | "
echo " \_| |_/\___/ \__, |\__,_|\___|\__|\__\___| \_| |_/\_/\_\ \_/ \_/ " echo " \_| |_/\___/ \__, |\__,_|\___|\__|\__\___| \_| |_/\_/\_\ \_/ \_/ "
echo " | | " echo " | | "
echo " |_| " echo " |_| "
echo " " echo " "
set "CURRENT_DIR=%cd%" set "CURRENT_DIR=%cd%"
if not "%MOQUETTE_HOME%" == "" goto gotHome if not "%MOQUETTE_HOME%" == "" goto gotHome
set "MOQUETTE_HOME=%CURRENT_DIR%" set "MOQUETTE_HOME=%CURRENT_DIR%"
if exist "%MOQUETTE_HOME%\bin\moquette.bat" goto okHome if exist "%MOQUETTE_HOME%\bin\moquette.bat" goto okHome
cd .. cd ..
set "MOQUETTE_HOME=%cd%" set "MOQUETTE_HOME=%cd%"
cd "%CURRENT_DIR%" cd "%CURRENT_DIR%"
:gotHome :gotHome
if exist "%MOQUETTE_HOME%\bin\moquette.bat" goto okHome if exist "%MOQUETTE_HOME%\bin\moquette.bat" goto okHome
echo The MOQUETTE_HOME environment variable is not defined correctly echo The MOQUETTE_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program echo This environment variable is needed to run this program
goto end goto end
:okHome :okHome
rem Set JavaHome if it exists rem Set JavaHome if it exists
if exist { "%JAVA_HOME%\bin\java" } ( if exist { "%JAVA_HOME%\bin\java" } (
set "JAVA="%JAVA_HOME%\bin\java"" set "JAVA="%JAVA_HOME%\bin\java""
) )
echo Using JAVA_HOME: "%JAVA_HOME%" echo Using JAVA_HOME: "%JAVA_HOME%"
echo Using MOQUETTE_HOME: "%MOQUETTE_HOME%" echo Using MOQUETTE_HOME: "%MOQUETTE_HOME%"
rem set LOG_CONSOLE_LEVEL=info rem set LOG_CONSOLE_LEVEL=info
rem set LOG_FILE_LEVEL=fine rem set LOG_FILE_LEVEL=fine
set JAVA_OPTS= set JAVA_OPTS=
set JAVA_OPTS_SCRIPT=-XX:+HeapDumpOnOutOfMemoryError -Djava.awt.headless=true set JAVA_OPTS_SCRIPT=-XX:+HeapDumpOnOutOfMemoryError -Djava.awt.headless=true
set MOQUETTE_PATH=%MOQUETTE_HOME% set MOQUETTE_PATH=%MOQUETTE_HOME%
set LOG_FILE=%MOQUETTE_HOME%\config\moquette-log.properties set LOG_FILE=%MOQUETTE_HOME%\config\moquette-log.properties
%JAVA% -server %JAVA_OPTS% %JAVA_OPTS_SCRIPT% -Dlog4j.configuration=file:%LOG_FILE% -Dmoquette.path=%MOQUETTE_PATH% -cp %MOQUETTE_HOME%\lib\* io.moquette.server.Server
## Use the Hotspot garbage-first collector.
set JAVA_OPTS=%JAVA_OPTS% -XX:+UseG1GC
## Have the JVM do less remembered set work during STW, instead
## preferring concurrent GC. Reduces p99.9 latency.
set JAVA_OPTS=%JAVA_OPTS% -XX:G1RSetUpdatingPauseTimePercent=5
## Main G1GC tunable: lowering the pause target will lower throughput and vise versa.
## 200ms is the JVM default and lowest viable setting
## 1000ms increases throughput. Keep it smaller than the timeouts.
set JAVA_OPTS=%JAVA_OPTS% -XX:MaxGCPauseMillis=500
## Optional G1 Settings
# Save CPU time on large (>= 16GB) heaps by delaying region scanning
# until the heap is 70% full. The default in Hotspot 8u40 is 40%.
#set JAVA_OPTS=%JAVA_OPTS% -XX:InitiatingHeapOccupancyPercent=70
# For systems with > 8 cores, the default ParallelGCThreads is 5/8 the number of logical cores.
# Otherwise equal to the number of cores when 8 or less.
# Machines with > 10 cores should try setting these to <= full cores.
#set JAVA_OPTS=%JAVA_OPTS% -XX:ParallelGCThreads=16
# By default, ConcGCThreads is 1/4 of ParallelGCThreads.
# Setting both to the same value can reduce STW durations.
#set JAVA_OPTS=%JAVA_OPTS% -XX:ConcGCThreads=16
### GC logging options -- uncomment to enable
set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintGCDetails
set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintGCDateStamps
set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintHeapAtGC
set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintTenuringDistribution
set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintGCApplicationStoppedTime
set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintPromotionFailure
#set JAVA_OPTS=%JAVA_OPTS% -XX:PrintFLSStatistics=1
#set JAVA_OPTS=%JAVA_OPTS% -Xloggc:/var/log/moquette/gc.log
set JAVA_OPTS=%JAVA_OPTS% -XX:+UseGCLogFileRotation
set JAVA_OPTS=%JAVA_OPTS% -XX:NumberOfGCLogFiles=10
set JAVA_OPTS=%JAVA_OPTS% -XX:GCLogFileSize=10M"
%JAVA% -server %JAVA_OPTS% %JAVA_OPTS_SCRIPT% -Dlog4j.configuration=file:%LOG_FILE% -Dmoquette.path=%MOQUETTE_PATH% -cp %MOQUETTE_HOME%\lib\* io.moquette.server.Server
+43 -4
View File
@@ -12,9 +12,8 @@ echo " | | | | (_) | (_| | |_| | __/ |_| || __/ | | | \ \/' / | | | | "
echo " \_| |_/\___/ \__, |\__,_|\___|\__|\__\___| \_| |_/\_/\_\ \_/ \_/ " echo " \_| |_/\___/ \__, |\__,_|\___|\__|\__\___| \_| |_/\_/\_\ \_/ \_/ "
echo " | | " echo " | | "
echo " |_| " echo " |_| "
echo " " echo " "
cd "$(dirname "$0")" cd "$(dirname "$0")"
@@ -52,5 +51,45 @@ MOQUETTE_PATH=$MOQUETTE_HOME/
#LOG_FILE_LEVEL=fine #LOG_FILE_LEVEL=fine
JAVA_OPTS_SCRIPT="-XX:+HeapDumpOnOutOfMemoryError -Djava.awt.headless=true" JAVA_OPTS_SCRIPT="-XX:+HeapDumpOnOutOfMemoryError -Djava.awt.headless=true"
$JAVA -server $JAVA_OPTS $JAVA_OPTS_SCRIPT -Dlog4j.configuration="file:$LOG_FILE" -Dmoquette.path="$MOQUETTE_PATH" -cp "$MOQUETTE_HOME/lib/*" io.moquette.server.Server ## Use the Hotspot garbage-first collector.
JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC"
## Have the JVM do less remembered set work during STW, instead
## preferring concurrent GC. Reduces p99.9 latency.
JAVA_OPTS="$JAVA_OPTS -XX:G1RSetUpdatingPauseTimePercent=5"
## Main G1GC tunable: lowering the pause target will lower throughput and vise versa.
## 200ms is the JVM default and lowest viable setting
## 1000ms increases throughput. Keep it smaller than the timeouts.
JAVA_OPTS="$JAVA_OPTS -XX:MaxGCPauseMillis=500"
## Optional G1 Settings
# Save CPU time on large (>= 16GB) heaps by delaying region scanning
# until the heap is 70% full. The default in Hotspot 8u40 is 40%.
#JAVA_OPTS="$JAVA_OPTS -XX:InitiatingHeapOccupancyPercent=70"
# For systems with > 8 cores, the default ParallelGCThreads is 5/8 the number of logical cores.
# Otherwise equal to the number of cores when 8 or less.
# Machines with > 10 cores should try setting these to <= full cores.
#JAVA_OPTS="$JAVA_OPTS -XX:ParallelGCThreads=16"
# By default, ConcGCThreads is 1/4 of ParallelGCThreads.
# Setting both to the same value can reduce STW durations.
#JAVA_OPTS="$JAVA_OPTS -XX:ConcGCThreads=16"
### GC logging options -- uncomment to enable
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDateStamps"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintTenuringDistribution"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCApplicationStoppedTime"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintPromotionFailure"
#JAVA_OPTS="$JAVA_OPTS -XX:PrintFLSStatistics=1"
#JAVA_OPTS="$JAVA_OPTS -Xloggc:/var/log/moquette/gc.log"
JAVA_OPTS="$JAVA_OPTS -XX:+UseGCLogFileRotation"
JAVA_OPTS="$JAVA_OPTS -XX:NumberOfGCLogFiles=10"
JAVA_OPTS="$JAVA_OPTS -XX:GCLogFileSize=10M"
$JAVA -server $JAVA_OPTS $JAVA_OPTS_SCRIPT -Dlog4j.configuration="file:$LOG_FILE" -Dmoquette.path="$MOQUETTE_PATH" -cp "$MOQUETTE_HOME/lib/*" io.moquette.server.Server