gpt4 book ai didi

Java + Tomcat,垂死的数据库连接?

转载 作者:IT老高 更新时间:2023-10-29 00:07:54 26 4
gpt4 key购买 nike

我有一个 tomcat 实例设置,但我在 context.xml 中配置的数据库连接在一段时间不活动后一直死机。

当我检查日志时,出现以下错误:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:从服务器成功接收到的最后一个数据包是 68051 秒前。上次成功发送到服务器的数据包是 68051 秒ago,比服务器配置的值长'等待超时'。您应该考虑过期和/或测试在您的应用程序中使用之前的连接有效性,增加了服务器为客户端超时配置的值,或使用 Connector/J连接属性 'autoReconnect=true' 来避免这个问题。

这是context.xml中的配置:

<Resource name="dataSourceName" 
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="username"
password="********"
removeAbandoned = "true"
logAbandoned = "true"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/databasename?autoReconnect=true&amp;useEncoding=true&amp;characterEncoding=UTF-8" />

我正在使用 autoReconnect=true 就像错误所说的那样,但连接一直在中断。我以前从未见过这种情况。

我还验证了所有数据库连接都已正确关闭。

最佳答案

Tomcat Documentation

DBCP 使用 Jakarta-Commons 数据库连接池。它依赖于 Jakarta-Commons 组件的数量:

* Jakarta-Commons DBCP
* Jakarta-Commons Collections
* Jakarta-Commons Pool

此属性可能会帮助您。

removeAbandonedTimeout="60"

我正在使用相同的连接池,我正在设置这些属性以防止发生同样的事情,只是没有通过 tomcat 配置。但如果第一件事不起作用,请尝试这些。

testWhileIdle=true
timeBetweenEvictionRunsMillis=300000

关于Java + Tomcat,垂死的数据库连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15949/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com