2014-01-18 12:05:11 +01:00
|
|
|
#!/bin/sh
|
|
|
|
|
#
|
2015-07-23 15:09:20 +02:00
|
|
|
# Copyright (c) 2012-2015 Andrea Selva
|
2014-01-18 12:05:11 +01:00
|
|
|
#
|
|
|
|
|
|
2014-02-15 15:18:54 +01:00
|
|
|
echo " "
|
|
|
|
|
echo " ___ ___ _ _ ___ ________ _____ _____ "
|
|
|
|
|
echo " | \/ | | | | | | \/ | _ |_ _|_ _| "
|
|
|
|
|
echo " | . . | ___ __ _ _ _ ___| |_| |_ ___ | . . | | | | | | | | "
|
|
|
|
|
echo " | |\/| |/ _ \ / _\ | | | |/ _ \ __| __/ _ \ | |\/| | | | | | | | | "
|
|
|
|
|
echo " | | | | (_) | (_| | |_| | __/ |_| || __/ | | | \ \/' / | | | | "
|
|
|
|
|
echo " \_| |_/\___/ \__, |\__,_|\___|\__|\__\___| \_| |_/\_/\_\ \_/ \_/ "
|
|
|
|
|
echo " | | "
|
|
|
|
|
echo " |_| "
|
2017-04-14 15:21:56 +02:00
|
|
|
echo " "
|
2019-02-24 19:18:12 +01:00
|
|
|
echo " version: 0.12.1 "
|
2017-04-14 15:21:56 +02:00
|
|
|
|
2014-01-18 12:05:11 +01:00
|
|
|
|
|
|
|
|
cd "$(dirname "$0")"
|
|
|
|
|
|
|
|
|
|
# resolve links - $0 may be a softlink
|
|
|
|
|
PRG="$0"
|
|
|
|
|
|
|
|
|
|
while [ -h "$PRG" ]; do
|
|
|
|
|
ls=`ls -ld "$PRG"`
|
|
|
|
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
|
|
|
|
if expr "$link" : '/.*' > /dev/null; then
|
|
|
|
|
PRG="$link"
|
|
|
|
|
else
|
|
|
|
|
PRG=`dirname "$PRG"`/"$link"
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
# Get standard environment variables
|
|
|
|
|
PRGDIR=`dirname "$PRG"`
|
|
|
|
|
|
|
|
|
|
# Only set MOQUETTE_HOME if not already set
|
|
|
|
|
[ -f "$MOQUETTE_HOME"/bin/moquette.sh ] || MOQUETTE_HOME=`cd "$PRGDIR/.." ; pwd`
|
|
|
|
|
export MOQUETTE_HOME
|
|
|
|
|
|
|
|
|
|
# Set JavaHome if it exists
|
|
|
|
|
if [ -f "${JAVA_HOME}/bin/java" ]; then
|
|
|
|
|
JAVA=${JAVA_HOME}/bin/java
|
|
|
|
|
else
|
|
|
|
|
JAVA=java
|
|
|
|
|
fi
|
|
|
|
|
export JAVA
|
|
|
|
|
|
2014-02-15 15:18:54 +01:00
|
|
|
LOG_FILE=$MOQUETTE_HOME/config/moquette-log.properties
|
2014-03-05 23:37:54 +01:00
|
|
|
MOQUETTE_PATH=$MOQUETTE_HOME/
|
2014-01-18 12:05:11 +01:00
|
|
|
#LOG_CONSOLE_LEVEL=info
|
|
|
|
|
#LOG_FILE_LEVEL=fine
|
|
|
|
|
JAVA_OPTS_SCRIPT="-XX:+HeapDumpOnOutOfMemoryError -Djava.awt.headless=true"
|
|
|
|
|
|
2017-04-14 15:21:56 +02:00
|
|
|
## Use the Hotspot garbage-first collector.
|
|
|
|
|
JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC"
|
2014-01-18 12:05:11 +01:00
|
|
|
|
2017-04-14 15:21:56 +02:00
|
|
|
## 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"
|
2018-04-27 15:56:26 +02:00
|
|
|
JAVA_OPTS="$JAVA_OPTS -Xloggc:$MOQUETTE_HOME/gc.log"
|
2017-04-14 15:21:56 +02:00
|
|
|
JAVA_OPTS="$JAVA_OPTS -XX:+UseGCLogFileRotation"
|
|
|
|
|
JAVA_OPTS="$JAVA_OPTS -XX:NumberOfGCLogFiles=10"
|
|
|
|
|
JAVA_OPTS="$JAVA_OPTS -XX:GCLogFileSize=10M"
|
|
|
|
|
|
2018-11-24 14:53:14 +01:00
|
|
|
$JAVA -server $JAVA_OPTS $JAVA_OPTS_SCRIPT -Dlog4j.configuration="file:$LOG_FILE" -Dmoquette.path="$MOQUETTE_PATH" -cp "$MOQUETTE_HOME/lib/*" io.moquette.broker.Server
|