小编典典

Grails:Tomcat不会在产品中彻底关闭

tomcat

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

从IntelliJ运行时,它将完全关闭。但是在独立的Tomcat
7上,关闭会使它进入僵尸状态,在该状态下Java进程仍然存在,但HTTP请求挂起。我必须杀死Java进程(使用kill)。

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

我怀疑它可能是Quartz Job Scheduler插件,但是我在grails-app / jobs中部署了没有作业的版本,但它仍然挂起。

有人遇到过吗?谢谢!


阅读 243

收藏
2020-06-16

共1个答案

小编典典

非守护程序线程

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

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