jenkins,Tomcat重啟指令碼,設定jvm引數之後遇到了一個坑。
阿新 • • 發佈:2019-02-10
如下是我的重啟指令碼
#/bin/sh
source /etc/profile
sh /opt/kms_jsoncach.sh
pid=`ps -ef | grep "APPmanager" | grep -v 'grep\|tail\|more\|less'| awk '{print $2}'`
5 kill -9 $pid
rm -f /opt/eAPPmanager/pid
else
rm -f /opt/ethank-ktv-manager/pid
fi
rm -rf /opt/APPmanager/webapps/*
cp /opt/bak/APPmanager.war /opt/APPmanager/webapps/
sh /opt/APPmanager/bin/startup.sh
最開始的時候沒有設定任何jvm引數,一切都是好用的。
設定了引數:
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -Xms1024m -Xmx2048m
-XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/data/jvm/my/ -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc :/opt/data/jvm/my/gc.log"
釋出之後發現server端的長連結不好用了。查來查去發現會同時啟動兩個tomcat程序。
後來看了一下,找到了問題 :
pid=`ps -ef | grep "APPmanager" | grep -v 'grep\|tail\|more\|less'| awk '{print $2}'`
這裡pid獲取不到了,因為grep -v less
遇到了jvm引數
-Djava.awt.headless=true
pid就沒有獲取到,導致了tomcat沒有真正重啟,tomat的模式是autoDeploy=”true”
,所以表面上看到程式是更新了,但是程序並沒有重啟。