129 lines
3.7 KiB
Bash
129 lines
3.7 KiB
Bash
#!/bin/bash
|
|
|
|
TASK_NAME=$1
|
|
MEMORY=$2
|
|
if [ -z "$MEMORY" ]; then
|
|
MEMORY=1024
|
|
PERM_MEMORY=128
|
|
fi
|
|
|
|
#get param from 16th to end
|
|
JVM_PARAMS=""
|
|
|
|
usage() {
|
|
echo "please set startup Args String"
|
|
exit 1
|
|
}
|
|
|
|
if [ $# -lt 1 ]; then
|
|
usage
|
|
fi
|
|
|
|
if [ $(whoami) == "root" ]; then
|
|
echo DO NOT use root user to launch me.
|
|
exit 1
|
|
fi
|
|
|
|
case "$(uname)" in
|
|
Linux)
|
|
BASE_DIR=$(readlink -f $(dirname $0))
|
|
;;
|
|
*)
|
|
BASE_DIR=$(
|
|
cd $(dirname $0)
|
|
pwd
|
|
)
|
|
;;
|
|
esac
|
|
BASE_DIR=${BASE_DIR}/../
|
|
logback_configurationFile=$BASE_DIR/conf/logback.xml
|
|
export LD_LIBRARY_PATH=${BASE_DIR}/lib:${LD_LIBRARY_PATH}
|
|
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
|
|
export LANG=zh_CN.GB18030
|
|
|
|
JAVA_OPTS="${JAVA_OPTS} -server -Xms${MEMORY}m -Xmx${MEMORY}m -Xss1m -DtaskName=$TASK_NAME -Dlogback.configurationFile=$logback_configurationFile"
|
|
if [[ ! "$JVM_PARAMS" =~ "PermSize" ]]; then
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:PermSize=${PERM_MEMORY}m -XX:MaxPermSize=${PERM_MEMORY}m"
|
|
fi
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:+UseConcMarkSweepGC"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:-UseAdaptiveSizePolicy -XX:SurvivorRatio=2 -XX:NewRatio=2"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:-OmitStackTraceInFastThrow"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:CMSInitiatingOccupancyFraction=80"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:+UseCMSInitiatingOccupancyOnly"
|
|
JAVA_OPTS="${JAVA_OPTS} -Djava.net.preferIPv4Stack=true"
|
|
#JAVA_OPTS="${JAVA_OPTS} -XX:+UseG1GC -XX:MaxGCPauseMillis=250 -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent"
|
|
JAVA_OPTS="${JAVA_OPTS} -Xlog:gc*:${HOME}/logs/polardbx-binlog/$TASK_NAME/gc.log:time"
|
|
JAVA_OPTS="${JAVA_OPTS} -Dmemory=${MEMORY}"
|
|
JAVA_OPTS="${JAVA_OPTS} -Djava.util.prefs.systemRoot=${HOME}/.java -Djava.util.prefs.userRoot=${HOME}/.java/.userPrefs -Dfile.encoding=UTF-8"
|
|
JAVA_OPTS="${JAVA_OPTS} -Dcdc.home.dir=${BASE_DIR}"
|
|
JAVA_OPTS="${JAVA_OPTS} --add-exports java.base/jdk.internal.ref=ALL-UNNAMED"
|
|
|
|
if [ ! -d ${HOME}/.java ]; then
|
|
mkdir "${HOME}/.java"
|
|
fi
|
|
|
|
if [ ! -d ${HOME}/.java/.userPrefs ]; then
|
|
mkdir "${HOME}/.java/.userPrefs"
|
|
fi
|
|
|
|
if [ ! -d ${HOME}/.java/.systemPrefs ]; then
|
|
mkdir "${HOME}/.java/.systemPrefs"
|
|
fi
|
|
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:+HeapDumpOnOutOfMemoryError"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:HeapDumpPath=${HOME}/logs"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:+CrashOnOutOfMemoryError"
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:ErrorFile=${HOME}/hs_err_pid%p.log"
|
|
|
|
JAVA_OPTS="${JAVA_OPTS} ${JVM_PARAMS}"
|
|
|
|
## set java path
|
|
TAOBAO_JAVA="/opt/taobao/java/bin/java"
|
|
ALIBABA_JAVA="/usr/alibaba/java/bin/java"
|
|
if [ -f $TAOBAO_JAVA ]; then
|
|
JAVA=$TAOBAO_JAVA
|
|
elif [ -f $ALIBABA_JAVA ]; then
|
|
JAVA=$ALIBABA_JAVA
|
|
else
|
|
JAVA=$(which java)
|
|
if [ ! -f $JAVA ]; then
|
|
echo "Cannot find a Java JDK. Please set either set JAVA or put java (>=1.7) in your PATH." 2>&2
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
#BUILDER IN classpath
|
|
CLASSPATH=""
|
|
|
|
for jar in $(ls ${BASE_DIR}/lib/*.jar); do
|
|
CLASSPATH="${CLASSPATH}:""${jar}"
|
|
done
|
|
|
|
CLASSPATH="${BASE_DIR}/conf:$CLASSPATH"
|
|
|
|
if [ -f ${HOME}/env/env.properties ]; then
|
|
CORES=$(sed '/^cpu_cores=/!d;s/.*=//' ${HOME}/env/env.properties)
|
|
if [ -n "$CORES" ]; then
|
|
JAVA_OPTS="${JAVA_OPTS} -XX:ActiveProcessorCount=$CORES"
|
|
fi
|
|
CLASSPATH="${HOME}/env:$CLASSPATH"
|
|
fi
|
|
|
|
|
|
if [ ! -d $HOME/logs/polardbx-binlog/$TASK_NAME ]; then
|
|
mkdir $HOME/logs/polardbx-binlog/$TASK_NAME
|
|
fi
|
|
defaultLog=$HOME/logs/polardbx-binlog/$TASK_NAME/default.log
|
|
|
|
cd $HOME
|
|
|
|
#Start Java Process
|
|
|
|
if [[ "$TASK_NAME" == Dumper* ]]; then
|
|
${JAVA} ${JAVA_OPTS} -classpath ${CLASSPATH}:. com.aliyun.polardbx.binlog.dumper.DumperBootStrap "taskName=${TASK_NAME}" 1>>$defaultLog 2>&1 &
|
|
elif [[ "$TASK_NAME" == "TRANSFER" ]]; then
|
|
${JAVA} ${JAVA_OPTS} -classpath ${CLASSPATH}:. com.aliyun.polardbx.binlog.transfer.Main "taskName=${TASK_NAME}" 1>>$defaultLog 2>&1 &
|
|
else
|
|
${JAVA} ${JAVA_OPTS} -classpath ${CLASSPATH}:. com.aliyun.polardbx.binlog.TaskBootStrap "taskName=${TASK_NAME}" 1>>$defaultLog 2>&1 &
|
|
fi
|