解决Tomcat无法shutdown进程

Posted ck_2016

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决Tomcat无法shutdown进程相关的知识,希望对你有一定的参考价值。

转自:
http://my.oschina.net/yongyi/blog/405198

问题分析

这个在windows下没有碰到过,因为此前跑Tomcat都是以服务而不是命令脚本的形式跑的,而且已经换了一个项目,所以暂时不考察windows下是否存在该问题。

难道是Tomcat版本问题?或者用带内存泄漏保护的Tomcat 7可以解决该问题?尝试将web应用跑在apache-tomcat-6.0.18、apache-tomcat-6.0.35、apache- tomcat-7.0.34,发现均存在无法shutdown.sh进程问题。

难道在CentOS(Linux)下,Tomcat无法用shutdown.sh停掉进程?显然不可能的。于是又把web应用从webapps中移走,换 回tomcat自带的ROOT,果然启动后再shutdown.sh,查找不到原来的tomcat进程了,也就证明了是自己web应用的问题了。

 

解决方案

现在已经确定是web应用的问题了,所以可以提解决方案了。

 

 Kill进程,修改tomcat bin目录下shutdown.sh和catalina.sh文件

忽略日志中的严重警告,因为这是关闭tomcat时候引起的,正常情况下不会发生这种内存泄露情况,而且Tomcat6.18以上版本的Tomcat已经 做了内存泄露保护,交给Tomcat完成吧,我们只需要在shutdown.sh之后,补上一个kill -9 pid即可。要是嫌这样太麻烦了,可以如下这样改:

==============================bin/shutdown.sh
exec "$PRGDIR"/"$EXECUTABLE" stop -force "[email protected]" #加上 -force  

==============================bin/catalina.sh 在PRGDIR=`dirname "$PRG"`后面加上
if [ -z "$CATALINA_PID" ]; then
CATALINA_PID=$PRGDIR/CATALINA_PID
cat $CATALINA_PID
fi










以上是关于解决Tomcat无法shutdown进程的主要内容,如果未能解决你的问题,请参考以下文章

linux环境中关闭tomcat,通过shutdown.sh无法彻底关闭--线程池

Windows下tomcat shutdown.bat 无法真正停止

Linux下tomcat的启动,关闭,以及shutdown失败杀死进程的方法

shutdown彻底关闭tomcat,以及多线程关闭

Linux下Tomcat的启动关闭杀死进程

Linux的tomcat的shutdown.sh关闭不了进程