jenkins,Tomcat重啓腳本,設置jvm參數之後遇到了一個坑。

如下是我的重啓腳本

 #/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”
,所以表面上看到程序是更新了,但是進程並沒有重啓。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章