Grails:Tomcat不会在生产中干净地关闭

Dea*_*ses 4 deployment grails tomcat quartz-scheduler

我在生产中关闭Grails应用程序时遇到问题.

从IntelliJ运行时它会干净地关闭.但是在一个独立的Tomcat 7上,关闭会让它进入一个僵尸状态,其中java进程仍然存在,但HTTP请求挂起.我必须杀死java进程(使用kill).

我正在使用Tomcat的标准bin/startup.sh和shutdown.sh.在Tomcat停止后,我将.war放入Tomcat的/ webapps目录然后启动.

我怀疑它可能是Quartz作业调度程序插件,但是我在grails-app/jobs中部署了一个没有作业的版本,它仍然挂起.

以前有人碰过这个吗?谢谢!

Ker*_*ğan 9

非守护进程线程

可能一个或多个非守护程序线程仍在运行,并阻止tomcat成功关闭.

  • 打开终端并键入ps -ef| grep java并找到您的Tomcat7 p_id
  • 类型 kill -3 p_id
  • type(在Tomcat目录中) tail -200 logs/catalina.out
  • 检查由...生成的线程转储kill -3
  • 寻找非守护进程线程
  • 检查您的代码以确定该进程仍然存活的原因.