blob: 78ffe964c015e72017b4595543be9ab1c9a2ad4e [file] [log] [blame]
#!/bin/sh
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
#===========================================================================================
# Java 环境设置
#===========================================================================================
error_exit ()
{
echo "ERROR: $1 !!"
exit 1
}
check_java_version ()
{
_java=$1
_version=$2
version=$("$_java" -version 2>&1 | awk -F '"' '/version/ {print $2}' | grep -o '^[0-9]\+\.\+[0-9]\+')
flag="true"
if [[ $(echo "$version < $_version" | bc) -eq 1 ]]; then
flag="false"
fi
if [[ $("$_java" -version 2>&1) != *"64-Bit"* ]]; then
flag="false"
fi
echo $flag
}
check_java_opts ()
{
export IFS=" "
flag="true"
count=0
for opt in $1; do
if [[ $opt == *"-Xms"* ]]; then
xms=`echo $opt | tr -d -c 0-9`
if [[ $xms -lt 4 ]]; then
flag="false"
fi
(( count++ ))
fi
if [[ $opt == *"-Xmx"* ]]; then
xmx=`echo $opt | tr -d -c 0-9`
if [[ $xmx -lt 4 ]]; then
flag="false"
fi
(( count++ ))
fi
done
if [[ $count -lt 2 ]]; then
flag="false"
fi
echo $flag
}
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java
[ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!"
export JAVA_HOME
export JAVA="$JAVA_HOME/bin/java"
export BASE_DIR=$(dirname $0)/..
export CLASSPATH=.:${BASE_DIR}/conf:${CLASSPATH}
export LANG=en_US.UTF-8
#===========================================================================================
# JVM Parameters Configuration
#===========================================================================================
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -XX:PermSize=128m -XX:MaxPermSize=320m"
JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:SurvivorRatio=8 -XX:+DisableExplicitGC"
JAVA_OPT="${JAVA_OPT} -verbose:gc"
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
JAVA_OPT="${JAVA_OPT} -XX:+AlwaysPreTouch"
JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=10g"
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages -XX:-UseBiasedLocking"
if [[ $(check_java_version "$JAVA" "9") == "false" ]]; then
JAVA_OPT="${JAVA_OPT} -Xloggc:/dev/shm/mq_gc_%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy"
JAVA_OPT="${JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext"
JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"
else
if [ "$(uname)" == "Darwin" ]; then
JAVA_OPT="${JAVA_OPT} -Xlog:gc:/tmp/mq_gc_$$.log -Xlog:gc*"
JAVA_OPT="${JAVA_OPT} -cp $(find "${BASE_DIR}/lib" -name '*.jar' | tr "\n" ":"):${CLASSPATH}"
else
JAVA_OPT="${JAVA_OPT} -Xlog:gc:/dev/shm/mq_gc_%p.log -Xlog:gc*"
JAVA_OPT="${JAVA_OPT} -cp $(find "${BASE_DIR}/lib" -name '*.jar' | sed ':a;N;s/\n/:/;ba;'):${CLASSPATH}"
fi
fi
JAVA_OPT="${JAVA_OPT} -DisSyncFlush=false"
#===========================================================================================
# Log Configuration for auth module.
#===========================================================================================
JAVA_OPT="${JAVA_OPT} -Dons.api.loggingCharset=UTF-8"
JAVA_OPT="${JAVA_OPT} -Dons.api.loggingLevel=INFO"
#===========================================================================================
# SSL Configuration
#===========================================================================================
JAVA_OPT="${JAVA_OPT} -Dtls.server.mode=disabled"
JAVA_OPT="${JAVA_OPT} -Dtls.private.key.encrypted=false"
JAVA_OPT="${JAVA_OPT} -Djdk.tls.rejectClientInitiatedRenegotiation=true"
if [[ $(check_java_opts "$JAVA_OPT") == "false" ]]; then
error_exit "Too small heap mem size or Xms/Xms/Xmn are missing, we need Xms >= 4g, Xmx >= 4g and Xmn >= 2g."
fi
if [[ $(check_java_version "$JAVA" "1.7") == "false" ]]; then
error_exit "Java version is too low, we need java(x64) 1.7+!"
fi
numactl --interleave=all pwd > /dev/null 2>&1
if [ $? -eq 0 ]
then
exec numactl --interleave=all $JAVA ${JAVA_OPT} $@
else
exec $JAVA ${JAVA_OPT} $@
fi