startup.sh 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. #!/bin/bash
  2. SERVICE_NAME=apollo-adminservice
  3. ## Adjust log dir if necessary
  4. LOG_DIR=/opt/logs/100003172
  5. ## Adjust server port if necessary
  6. SERVER_PORT=8090
  7. ## Adjust memory settings if necessary
  8. #export JAVA_OPTS="-Xms2560m -Xmx2560m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=1536m -XX:MaxNewSize=1536m -XX:SurvivorRatio=8"
  9. ## Only uncomment the following when you are using server jvm
  10. #export JAVA_OPTS="$JAVA_OPTS -server -XX:-ReduceInitialCardMarks"
  11. ########### The following is the same for configservice, adminservice, portal ###########
  12. export JAVA_OPTS="$JAVA_OPTS -XX:+UseParNewGC -XX:ParallelGCThreads=4 -XX:MaxTenuringThreshold=9 -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+ScavengeBeforeFullGC -XX:+UseCMSCompactAtFullCollection -XX:+CMSParallelRemarkEnabled -XX:CMSFullGCsBeforeCompaction=9 -XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSClassUnloadingEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSPermGenSweepingEnabled -XX:CMSInitiatingPermOccupancyFraction=70 -XX:+ExplicitGCInvokesConcurrent -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationConcurrentTime -XX:+PrintHeapAtGC -XX:+UseGCLogFileRotation -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Duser.timezone=Asia/Shanghai -Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 -Djava.security.egd=file:/dev/./urandom"
  13. export JAVA_OPTS="$JAVA_OPTS -Dserver.port=$SERVER_PORT -Dlogging.file=$LOG_DIR/$SERVICE_NAME.log -Xloggc:$LOG_DIR/gc.log -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=5M -XX:HeapDumpPath=$LOG_DIR/HeapDumpOnOutOfMemoryError/"
  14. PATH_TO_JAR=$SERVICE_NAME".jar"
  15. SERVER_URL="http://localhost:$SERVER_PORT"
  16. function checkPidAlive {
  17. for i in `ls -t $SERVICE_NAME*.pid 2>/dev/null`
  18. do
  19. read pid < $i
  20. result=$(ps -p "$pid")
  21. if [ "$?" -eq 0 ]; then
  22. return 0
  23. else
  24. printf "\npid - $pid just quit unexpectedly, please check logs under $LOG_DIR and /tmp for more information!\n"
  25. exit 1;
  26. fi
  27. done
  28. printf "\nNo pid file found, startup may failed. Please check logs under $LOG_DIR and /tmp for more information!\n"
  29. exit 1;
  30. }
  31. if [ "$(uname)" == "Darwin" ]; then
  32. windows="0"
  33. elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
  34. windows="0"
  35. elif [ "$(expr substr $(uname -s) 1 5)" == "MINGW" ]; then
  36. windows="1"
  37. else
  38. windows="0"
  39. fi
  40. # for Windows
  41. if [ "$windows" == "1" ] && [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then
  42. tmp_java_home=`cygpath -sw "$JAVA_HOME"`
  43. export JAVA_HOME=`cygpath -u $tmp_java_home`
  44. echo "Windows new JAVA_HOME is: $JAVA_HOME"
  45. fi
  46. cd `dirname $0`/..
  47. for i in `ls $SERVICE_NAME-*.jar 2>/dev/null`
  48. do
  49. if [[ ! $i == *"-sources.jar" ]]
  50. then
  51. PATH_TO_JAR=$i
  52. break
  53. fi
  54. done
  55. if [[ ! -f PATH_TO_JAR && -d current ]]; then
  56. cd current
  57. for i in `ls $SERVICE_NAME-*.jar 2>/dev/null`
  58. do
  59. if [[ ! $i == *"-sources.jar" ]]
  60. then
  61. PATH_TO_JAR=$i
  62. break
  63. fi
  64. done
  65. fi
  66. if [[ -f $SERVICE_NAME".jar" ]]; then
  67. rm -rf $SERVICE_NAME".jar"
  68. fi
  69. printf "$(date) ==== Starting ==== \n"
  70. ln $PATH_TO_JAR $SERVICE_NAME".jar"
  71. chmod a+x $SERVICE_NAME".jar"
  72. ./$SERVICE_NAME".jar" start
  73. rc=$?;
  74. if [[ $rc != 0 ]];
  75. then
  76. echo "$(date) Failed to start $SERVICE_NAME.jar, return code: $rc"
  77. exit $rc;
  78. fi
  79. declare -i counter=0
  80. declare -i max_counter=48 # 48*5=240s
  81. declare -i total_time=0
  82. printf "Waiting for server startup"
  83. until [[ (( counter -ge max_counter )) || "$(curl -X GET --silent --connect-timeout 1 --max-time 2 --head $SERVER_URL | grep "HTTP")" != "" ]];
  84. do
  85. printf "."
  86. counter+=1
  87. sleep 5
  88. checkPidAlive
  89. done
  90. total_time=counter*5
  91. if [[ (( counter -ge max_counter )) ]];
  92. then
  93. printf "\n$(date) Server failed to start in $total_time seconds!\n"
  94. exit 1;
  95. fi
  96. printf "\n$(date) Server started in $total_time seconds!\n"
  97. exit 0;