tomcat启动使mysql关闭了_tomcat关闭的时候报错:web应用程序似乎启动了一个名为[mysql-cj-abandoned-connection-cleanup]的线程,但未停止,可能会造...

可以做个监听器:@WebListener

public class ContextFinalizer implements ServletContextListener {

private static final Logger logger = LoggerFactory.getLogger(ContextFinalizer.class);

public void contextInitialized(ServletContextEvent sce) {

}

public void contextDestroyed(ServletContextEvent sce) {

Enumeration drivers = DriverManager.getDrivers();

Driver d = null;

while (drivers.hasMoreElements()) {

try {

d = drivers.nextElement();

DriverManager.deregisterDriver(d);

logger.warn(String.format("Driver %s deregistered", d));

} catch (SQLException ex) {

logger.warn(String.format("Error deregistering driver %s", d), ex);

}

}

AbandonedConnectionCleanupThread.uncheckedShutdown();

}

}

09-Jun-2023 15:19:12.806 信息 [main] org.apache.catalina.core.StandardServer.await 通过关闭端口接收到有效的关闭命令。正在停止服务器实例。 09-Jun-2023 15:19:12.807 信息 [main] org.apache.coyote.AbstractProtocol.pause 暂停ProtocolHandler["http-nio-8080"] 09-Jun-2023 15:19:13.217 信息 [main] org.apache.catalina.core.StandardService.stopInternal 正在停止服务[Catalina] 09-Jun-2023 15:19:13.230 警告 [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [ROOT] 注册了JDBC驱动程序 [com.mysql.cj.jdbc.Driver],但在Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。 09-Jun-2023 15:19:13.230 警告 [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [ROOT] 注册了JDBC驱动程序 [org.apache.ibatis.datasource.unpooled.UnpooledDataSource.DriverProxy],但在Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。 09-Jun-2023 15:19:13.230 警告 [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[ROOT]似乎启动一个名为[mysql-cj-abandoned-connection-cleanup]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[ java.lang.Object.wait(Native Method) java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144) com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:91) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) java.lang.Thread.run(Thread.java:750)] 09-Jun-2023 15:19:13.241 信息 [main] org.apache.coyote.AbstractProtocol.stop 正在停止ProtocolHandler ["http-nio-8080"] 09-Jun-2023 15:19:13.252 信息 [main] org.apache.coyote.AbstractProtocol.destroy 正在摧毁协议处理器 ["http-nio-8080"] 是什么原因
06-10
### 回答1: -plugin是什么? A:mysql-cj-abandoned-connection-cleanup-plugin是一个MySQL插件,它用于自动关闭已经被应用程序丢弃的连接。它可以帮助管理员减少数据库服务器上的资源消耗和性能问题。该插件通过一个“拦截器”模式来捕捉被应用程序丢弃的连接,并在事先定义的时间间隔后关闭这些连接。 ### 回答2: mysql-cj-abandoned-connection-cleanup一个MySQL Connector/J库中的参数,用于在连接池中清理已被废弃的连接。 MySQL Connector/J是一个用于Java程序连接MySQL数据库的驱动程序。在使用连接池时,连接池会提供一组已经建立好的数据库连接,供Java程序使用,以提高数据库连接的效率和性能。 然而,在某些情况下,可能会出现一些连接没有被正确关闭的情况,这些连接就被视为废弃的连接。废弃的连接可能导致连接池中的连接资源被占用,无法再被其他程序使用,从而浪费了系统资源。 为了解决这一问题,MySQL Connector/J引入了mysql-cj-abandoned-connection-cleanup参数。当设置为true时,默认为false,此参数会开启废弃连接的自动清理功能。一旦开启,连接池会定期检查已分配的连接是否已经被释放,如果发现连接已经被废弃,则会将其关闭并从连接池中移除。 使用mysql-cj-abandoned-connection-cleanup参数可以有效地解决废弃连接导致的问题,提高连接池的使用效率和资源利用率。但需要注意的是,设置过于频繁的检查时间可能会对系统性能产生一定的影响,因此在设置时需要根据具体的场景和需求进行权衡和调整。 总之,mysql-cj-abandoned-connection-cleanup参数在MySQL Connector/J库中扮演着清理废弃连接的重要角色,通过设置此参数可以自动检测和清理掉废弃的连接,提高连接池的性能和资源利用率。 ### 回答3: mysql-cj-abandoned-connection-cleanupMySQL Connector/J JDBC驱动程序中的一个功能,用于清理连接池中被废弃的连接。 在使用连接池管理数据库连接时,有时候会发生连接被废弃但被正确关闭的情况。这可能是因为应用程序在使用连接后忘记关闭连接,或者因为网络或服务器等原因导致连接失效。如果这些废弃的连接不得及时清理,会占用服务器资源,导致性能下降甚至崩溃。 为了解决这个问题,MySQL Connector/J JDBC驱动程序引入了mysql-cj-abandoned-connection-cleanup功能。当启用这个功能时,MySQL Connector/J会定期检查连接池中的连接,并识别那些被废弃的连接。被认定为废弃的连接是指从连接被创建后一段时间内被使用的连接。 一旦识别出被废弃的连接,mysql-cj-abandoned-connection-cleanup功能会自动将这些连接关闭,以释放服务器资源。这样可以保持连接池的健康状态,提高应用程序的性能和可靠性。 为了启用mysql-cj-abandoned-connection-cleanup功能,可以在应用程序的JDBC连接字符串中添加如下参数:abandonedConnectionCleanup=true。启用该功能后,可以通过设置一些其他参数来调整清理废弃连接的策略,如连接被认为废弃的超时时间和清理频率等。 总之,mysql-cj-abandoned-connection-cleanup功能是MySQL Connector/J JDBC驱动程序中的一个重要功能,用于自动清理连接池中被废弃的连接,以提高应用程序的性能和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值