我的Tomcat 5.5.28安装在CentOS 5.3 64bit系统上
每次重启都停住,只要要等5-10分钟才可以。
系统reboot或者shutdown也都卡在关闭tomcat的过程中
后来发现直接用/usr/local/tomcat/bin/shutdown.sh一样存在问题,但是如果Tomcat什么项目都不加载,却正常。
我怀疑是tomcat加载的lib或者jar文件一多,重启和关闭就会慢的巨慢。。。甚至10分钟以上。
为了解决这个问题,我修改了/etc/init.d/目录下的tomcat文件,让关闭或者重启的时候,直接通过kill命令杀掉tomcat进程。
下面是我/etc/init.d/tomcat文件

 

C/C++ 代码复制内容到剪贴板
  1. #!/bin/bash
  2. #
  3. # Startup script for the tomcat
  4. #
  5. # chkconfig: 345 80 15
  6. # description: Tomcat is a Servlet+JSP Engine.
  7.  
  8. # Source function library.
  9. . /etc/rc.d/init.d/functions
  10.  
  11.  
  12. export JAVA_HOME=/usr/local/jdk1.6.0_16
  13. export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  14. export PATH=$PATH:$JAVA_HOME/bin
  15.  
  16. export CATALINA_BASE=/usr/local/tomcat
  17. export CATALINA_HOME=/usr/local/tomcat
  18. export CATALINA_TMPDIR=/usr/local/tomcat/temp
  19. export JRE_HOME=/usr/local/jdk1.6.0_16
  20.  
  21. start(){
  22. if [ -z $(/sbin/pidof java) ]; then
  23. echo "Starting tomcat"
  24. /usr/local/tomcat/bin/startup.sh
  25. touch /var/lock/subsys/tomcat
  26. else
  27. echo "tomcat allready running"
  28. fi
  29. }
  30.  
  31.  
  32. stop(){
  33. if [ ! -z $(/sbin/pidof java) ]; then
  34. echo "Shutting down tomcat"

    #下面就是关闭的核心代码了,用ps获取tomcat进程id,直接kill掉

  35. ps aux|grep tomcat|grep startup|awk '{print $2}'|xargs kill -9
  36. #/usr/local/tomcat/bin/shutdown.sh
  37. until [ -z $(/sbin/pidof java) ]; do :; done
  38. rm -f /var/lock/subsys/tomcat
  39. else
  40. echo "tomcat not running"
  41. fi
  42. }
  43.  
  44.  
  45. case "$1" in
  46. start)
  47. start
  48. ;;
  49. stop)
  50. stop
  51. ;;
  52. restart)
  53. stop
  54. start
  55. ;;
  56. status)
  57. /usr/local/tomcat/bin/catalina.sh version
  58. ;;
  59. *)
  60. echo "Usage: $0 {start|stop|restart|status}"
  61. esac
  62.  
  63. exit 0
  64.  
  65.