org.apache.coyote.AbstractProtocol pauseTomcat进程意外退出

一.错误

这一段时间写了一个分布式项目,在后期运维的时候发现系统经常性崩掉,查看日志发现都是报下面这个错误

org.apache.coyote.AbstractProtocol pauseTomcat进程意外退出_第1张图片

二.解决过程:

1.刚开始没有注意到上面的项目被shutdown了,注意力放在registered the JDBC driver上面,思考是不是因为很久没用调用服务,线程池没有配置好,导致系统以为没有连接数据库,再次调用服务的时候再次去注册,导致注册失败崩溃。于是换了将c3p0换成dbcp连接池,配置数据库连接存活机制。再次打包发布,还是报同样的错误。

2.反省是不是思路错了,是不是内存泄漏?是不是线程没有回收?是不是关闭的时候有问题?于是,我重写了close方法如下,并在配置文件配置好。再次打包发布,还是报同样的错误。

package com.ptj.util;

import org.apache.commons.dbcp.BasicDataSource;

import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * @author wh
 * @create 2019-02-23 14:12
 **/
public class XBasicDataSource extends BasicDataSource {
    @Override
    public synchronized void close() throws SQLException {
        //  System.out.println("......输出数据源Driver的url:"+DriverManager.getDriver(url));
        DriverManager.deregisterDriver(DriverManager.getDriver(url));
        super.close();
    }
}
 
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        

        
        
        
        
        
        
    

3.查看资料,很多人遇到过这样的问题,有人说是tomcat的bug,因为tomcat的版本问题,说是tomcat在linux的环境下内存泄漏检测导致的,于是重新安装tomcat,跟换版本,从7.0一路往上改到9.0。都还是没用解决问题。

最终解决:反复查看日志文件,把错误地方的日志信息复制出来仔细查看发现,系统崩掉的时间和我关电脑的时间大致吻合!!!什么意思?难道服务器崩掉和我关电脑有关?想了一下,不可能啊,服务器是租的阿里的云服务器,和我关电脑有什么关系?再想了一下,每次我关电脑前都会关掉所有的软件,其中包括远程连接控制服务器的xshell!是不是我关闭了xshell的时候tomcat就崩掉了呢?于是开了两个连接,一个连接查看日志,一个连接启动tomcat然后关掉。果然!在关掉连接的时候tomcat就运行停止了!于是上网查资料什么原因,才知道是启动的方式有问题!原来是用./startup.sh启动的,这样你关闭连接的时候,tomcat进程也会停止运行。要用nohup ./startup.sh &启动。于是试了一下,错误终于不报了!

反思:linux的命令和性能学的还不够通透。还有一个疑问,为什么有些项目用./startup.sh启动关闭连接还能运行呢?这些问题都要去查资料测试得出结果,下一次遇到这个问题再写一篇学习博客。错误之处,敬请指出!

 


 

你可能感兴趣的:(org.apache.coyote.AbstractProtocol pauseTomcat进程意外退出)