Tomcat在shutdown.sh之后,进程仍然存在的原因
在linux环境下,tomcat 执行shutdown.sh之后,进程仍然存在,这是个让人头疼的问题,个人认为最根本的原因是有一些非deamon thread 存在,这种情况下,tomcat关闭后,整个进程并不会结束。如何判这种情况呢?
大家可以按照以下步骤去判断:
1、找到tomcat当前运行的pid(使用ps -ef |grep tomcat),
2、找到jdk的目录,可以使用which java 命令,并切换到bin目录
3、在bin目录下执行jstack pid,查看每个thread,找出非deamon thread,进而判断这些thread为何没有停止
例:之前我遇到过的一个场景是在使用Quatz的定时任务,由于没有设置定时任务为deamon的,造成tomcat的进程没有停止。后来配置了Quatz的thread为deamon thread就把这个问题解决了。下面是相关配置,
<property name="quartzProperties">
<props>
<prop key="org.quartz.scheduler.makeSchedulerThreadDaemon">true</prop>
<prop key="org.quartz.threadPool.makeThreadsDaemons">true</prop>
</props>
</property>
以上配置放在了class="org.springframework.scheduling.quartz.SchedulerFactoryBean" 的bean配置项中。
本文出自 “知识搬运工” 博客,请务必保留此出处http://xiaoge90s.blog.51cto.com/6920186/1642209
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。