Tomcat重启脚本

由于近期用jenkin发版的时候,发现其中重启tomcat发布服务功能总是不能正常生效,所以我想在jenkin中调用自己写的一段shell脚本来完成重启tomcat的工作

#!/bin/sh  
CURRENT_TIME=`date "+%Y%m%d%H%M%S"`
TOMCAT_HOME='/home/app/apache-tomcat-7.0.79'  
TOMCAT_WORK=${TOMCAT_HOME}'/work/' 
TOMCAT_WEBPACK=${TOMCAT_HOME}'/webapps/xxx-web*'  
TOMCAT_PATH=${TOMCAT_HOME}'/bin'  
TOMCAT_BACKUP=${TOMCAT_HOME}'/backup/'${CURRENT_TIME}

echo ===========rm tomcat work ================
`rm -rf ${TOMCAT_WORK}`  
echo 'operate restart tomcat: '$TOMCAT_PATH  

pid=`ps aux | grep $TOMCAT_PATH | grep -v grep | grep -v retomcat | awk '{print $2}'`  
echo 'exist pid:'$pid  

if [ -n "$pid" ]  
then  
{  
   echo ===========shutdown================
   `mkdir ${TOMCAT_BACKUP}; mv ${TOMCAT_WEBPACK} ${TOMCAT_BACKUP}`
   $TOMCAT_PATH'/shutdown.sh'  
   sleep 10  
   pid=`ps aux | grep $TOMCAT_PATH | grep -v grep | grep -v retomcat | awk '{print $2}'`  
   if [ -n "$pid" ]  
   then  
    {  
      sleep 2  
      echo ========kill tomcat begin==============  
      echo $pid  
      kill -9 $pid  
      echo ========kill tomcat end==============  
    }  
   fi  
   sleep 2  
   echo ===========startup.sh==============  
   $TOMCAT_PATH'/startup.sh'  
 }  
else  
echo ===========startup.sh==============  
$TOMCAT_PATH'/startup.sh'  
  
fi

 

上传文件大小导致失败

【问题场景】 在本地开发环境,上传超过2MB的数据都可以成功上传至服务器。但是,在测试环境出现上传超过200K就会失败的问题。 前端使用的是springMVC,中间件使用Nginx + Tomcat

【排查方法】 1、检查不同环境下的spring配置文件中,上传文件大小限制

<!-- 配置多文件上传 -->
<bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
      <property name="defaultEncoding">
            <value>UTF-8</value>
      </property>
      <property name="maxUploadSize">
            <!-- 上传文件大小限制为31M,31*1024*1024 -->
            <value>32505856</value>
      </property>
      <property name="maxInMemorySize">
            <value>4096</value>
      </property>
</bean>

两个环节的代码都是同样的配置,没有问题,排查spring问题

2、检查两个环境的tomcat配置 conf/server.xml

<connector port="8080"    
   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"    
   enableLookups="false" redirectPort="8443" acceptCount="100"    
   debug="0" connectionTimeout="20000"     
   disableUploadTimeout="true" URIEncoding="utf-8"    
   maxPostSize="0"></connector>    

当maxPostSize<=0时,POST方式上传的文件大小不会被限制。配置一致,排除tomcat配置问题, 注意:maxPostSize参数只有当request的Content-Type为“application/x-www-form-urlencoded”时起作用。 参考资料 https://blog.csdn.net/lafengwnagzi/article/details/72846195

3、检查两个环境的nginx配置

server  
{  
    listen   80;  
    server_name  chat.erp.360buy.com;  
    #access_log    /export/servers/nginx/logs/chat.erp.360buy.com;  
    location / {  
        proxy_pass     http://tomcat;  
        client_max_body_size    1000m;  
    }  
}  

最终发现,测试环境的nginx配置不一致导致,问题定位成功 参考资料 https://blog.csdn.net/bruce128/article/details/9665503

【总结】 需要问题不要着急,先自查,从自己的代码入手。如果代码确认没有问题,就外范围扩大,看一下外部环境是否存在问题,一般情况都可以准确定位。