linux环境中关闭tomcat,通过shutdown.sh无法彻底关闭--线程池

  最近测试环境上测试的项目通过shutdown.sh始终无法彻底关闭。

  之前临时解决方法两种:

  第一:通过ps -ef|grep tomcat查看到tomcat的进程直接使用kill来杀死进程。

第二: 基本原理为启动tomcat时记录启动tomcat的进程id(pid),关闭时强制杀死该进程

1.找到tomcat下bin/catalina.sh文件,vi进去添加点东西,主要是记录tomcat的pid,如下:

  

大概在第125行左右,添加如下代码

#设置CATALINA_PID(后加)
if [ -z "$CATALINA_PID" ]; then
      CATALINA_PID=$PRGDIR/CATALINA_PID
      cat $CATALINA_PID
fi

保存即可。

2.vi进shutdown.sh文件,在最后一行如下红圈-force:

保存即可.

  但是始终未解决根本问题。查找问题思路:通过java自带的工具jps或者linux自带命令查找线程。这里直接使用jps。找到线程

再执行jstack pid,出现错误类似这样

方法一:从tomcat下项目入手,一般造成这种原因是因为项目中有非守护线程的存在。那么怎么找到改线程呢,请看下面:

利用jdk 提供的jstack可以帮助我们找到:

$JAVA_HOME/bin/jstack  <pid>

pid是指进程ID, 用ps -ef|grep tomcat 就可以查看到:

12126即为pid,继续输入jstack 12126会看到如下一堆东西:

还有一堆的线程池错误信息,上面截图是抄网上其他朋友们的,但是这堆信息和我差不多,。线程无法停止。再综合考虑code,发现code再关闭tomcat里没有调用关闭线程池的方法。这里需要手动关闭下,贴上代码

如果使用spring的线程池,最好也要加上destroy-method哦。

最后彻底解决。希望对朋友有所帮助

原文地址:https://www.cnblogs.com/lanweijava/p/9125134.html

时间: 2024-10-12 09:21:17

linux环境中关闭tomcat,通过shutdown.sh无法彻底关闭--线程池的相关文章

在linux环境中配置tomcat

1.将tomcat文件上传到linux服务器上,并且解压文件. 2.创建文件夹 mkdir /usr/local/solr  (这个文件夹,根据自己的喜好来创建) 3.将解压好的tomcat文件复制到创建的文件夹中 原文地址:https://www.cnblogs.com/fengzifengfeng/p/9885701.html

linux环境中 对tomcat配置java环境

JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx2048m -XX:MaxPermSize=512m" JAVA_HOME="/weblogic10/bea/jdk160_21" JRE_HOME="/weblogic10/bea/jdk160_21"

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,找

LINUX环境中tomcat启动错误:The servlets named X and Y are both mapped to the url-pattern [/Z] which is not permitted

最近有一个问题困扰了我3天,我在windows部署项目无误后,准备将项目发布到阿里云linux服务器上,发现启动报错了:LINUX环境中tomcat启动错误:The servlets named X and Y are both mapped to the url-pattern [/Z] which is not permitted,首先想到的是肯定部署代码或者项目配置文件的事,怀疑有可能是jar包出错了,果不其然,在项目的WebContent\WEB-INF\lib发现了servlet-ap

Linux环境下在Tomcat上部署JavaWeb工程

本文讲解如何将我们已经编译好的JavaWeb工程在Linux环境下的Tomcat上进行部署,总体上的思路是和Windows下JavaWeb项目部署到tomcat差不多,具体步骤和命令如下. 注:部署之前必须已经在Linux上安装好JDK,具体如何在Linux上安装JDK见:Linux环境下安装JDK 1 准备工作 1.下载安装Xshell.Xftp(用于远程连接Linux主机,具体自行百度) 2.官网下载Linux下tomcat安装包,我用的是:apache-tomcat-6.0.45.tar.

在Linux环境下搭建Tomcat+mysql+jdk环境

注:所有内容都是妹纸我亲自搭建成功运行,如果有问题,欢迎发邮件来交流. [email protected](此QQ只用来收邮件,一般情况下是不会登陆的,所有有问题可以发邮件哦~我会回复的) 按照下面的步骤一步一步来.   [Linux环境] 1.下载并安装一个VMware workstation, 这个是虚拟机的平台,后面要在里面搭建Linux系统. 2.下载一个centos安装包,linux版本有多种,比如说redhat.ubuntu.deepin.BT3,个人比较习惯使用centos,这里下

WebRtc 研究笔记1 Arch linux 环境中下载, 编译

开篇第一句,我觉得是最最重要的: 注意: WebRtc 源码的编译基础工作: 翻墙!  一定要在命令行, 让Git Svn 等命令访问到google的服务器,否则会出现各种异常 我的环境是 ArchLinux X64, 翻墙的方法: 1.各种VPN 2.修改hosts 3.各种代理服务器 ... 使用到的软件包 jdk 1.6 ( jdk1.7 无法编译), svn, git 环境变量: // /etc/profile # java export JAVA_HOME=/opt/jdk expor

LInux环境下Eclipse + Tomcat + MySQL 配置J2EE开发环境的方法

上一篇博文里总结了面向对象三大特性在Java中的体现,现在谈一谈Java中的抽象类,接口,内部类等特性. 一. 抽象类 public abstract class Shape { public int shapeID = 0; public abstract double getArea(); } Java中允许类.接口或成员方法具有抽象属性,而不允许成员域或构造方法具有抽象属性. 类修饰词中含有abstract的类具有抽象属性,称为抽象类:接口总是具有抽象属性. 如果成员方法的修饰词中含有ab

[软件测试]Linux环境中简单清爽的Google Test (GTest)测试环境搭建(初级使用)

本文将介绍单元测试工具google test(GTEST)在linux操作系统中测试环境的搭建方法.本文属于google test使用的基础教程.在linux中使用google test之前,需要对如下知识有一些了解: (1)C/C++编程方法 (2)makefile的编写 (3)linux命令行操作 (4)GTEST背景知识:它是用来干什么的?它用什么语言编写的?它的一些基本语法?等等 以上知识不需要做到熟能生巧,只要达到入门级别,使用GTEST不会费任何力气,毕竟GTEST也不是一个高门槛的

linux环境中执行Mysql脚本

1.首先进入shell~ 2.进入服务器后,输入mysql -h localhost -u root -p,进入MySql: 3.输入MySql密码: 4.将脚本复制到服务器,具体怎么做,可以用Xftp; 5.例如,我执行的test.sql,在/usr/local/test.sql目录下,在shell中输入source /usr/local/test.sql linux环境中执行Mysql脚本,布布扣,bubuko.com