关于tomcat7下shutdown无法正常关闭服务的解决方案

xiaoxiao2021-02-28  79

关于tomcat7下shutdown无法正常关闭服务的解决方案

问题:

在停止tomcat运行,一般普遍会选择bin目录下shutdown.sh,但实际情况会导致tomcat无法停止。原因Tomcat启动以后,会启动6条线程:

"ajp-bio-8009-AsyncTimeout" daemon prio=5 tid=7f8738afe000 nid=0x115ad6000 waiting on condition [115ad5000] "ajp-bio-8009-Acceptor-0" daemon prio=5 tid=7f8738b05800 nid=0x1159d3000 runnable [1159d2000] "http-bio-8080-AsyncTimeout" daemon prio=5 tid=7f8735acb800 nid=0x1158d0000 waiting on condition [1158cf000] "http-bio-8080-Acceptor-0" daemon prio=5 tid=7f8735acd000 nid=0x1157cd000 runnable [1157cc000] "ContainerBackgroundProcessor[StandardEngine[Catalina]]" daemon prio=5 tid=7f8732850800 nid=0x111203000 waiting on condition [111202000] "main" prio=5 tid=7f8735000800 nid=0x10843e000 runnable [10843c000]

其中5条是Dameon线程,而tomcat下shutdown时,并非将main这条Dameon线程终止,而是在配置的端口上通过ServerSocket来监听一个请求的到来,如果请求的字符串和配置的字符串相同的话即跳出循环,这样的话就会运行stop方法,运行完了以后,main线程就退出了。

解决方案:

首先在任何可访问目录下创建一个pid目录然后在tomcat bin/catalina.sh文件下面添加CATALINA_PID=/home/app/tomcats/pid/(唯一).pid然后在服务器目录下创建一个tomcatstart.sh文件 bin/catalina.sh start,用于tomcat启动同时在服务器目录下创建一个tomcatstop.sh文件 bin/catalina.sh stop -force,用于tomcat停止

问题解决,无需kill

PS:首先必须先创建pid文件目录

转载请注明原文地址: https://www.6miu.com/read-30744.html

最新回复(0)