- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Tomcat 7.0.47MySQL 连接器/J 5.1.20
我正在测试 HA 数据库设置,其中可以通过 DNS 名称访问 mysql 数据库(AWS 中的 RDS)。故障转移后,数据库将获得一个新 IP。
我有一个测试网络应用程序,在 context.xml 中定义了以下数据库连接:
<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver"
maxActive="3" maxIdle="2" maxWait="1000" name="jdbc/db"
password=“xxx” type="javax.sql.DataSource"
url="jdbc:mysql://xxx:3306/xxx?autoReconnect=true" username="root"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
removeAbandoned="true" logAbandoned="true" removeAbandonedTimeout="60"
/>
如您所见,定义的连接数量非常少,因此可以更轻松地重现此问题。我有一个 Web 客户端,它每秒进行一次 AJAX REST 调用,此调用只是在数据库中进行一次选择和一次插入。 Web框架是使用Spring JDBC的Spring MVC。
我启动了足够多的客户端以最大限度地利用并发数据库,然后我对数据库进行了故障转移。数据库恢复并且 DNS 故障转移到新 IP。我在 Tomcat 中看到的行为是永远不会释放或放弃连接。
SEVERE: Servlet.service() for servlet [appServlet] in context with path [/test] threw exception [Request processing failed; nested exception
is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection;
nested exception is org.apache.tomcat.jdbc.pool.PoolExhaustedException: [http-bio-8080-exec-11] Timeout: Pool empty. Unable to fetch a connection in 1 seconds, none available[size:3; busy:2; idle:0; lastwait:1000].] with root cause
org.apache.tomcat.jdbc.pool.PoolExhaustedException: [http-bio-8080-exec-11] Timeout: Pool empty. Unable to fetch a connection in 1 seconds, none available[size:3; busy:2; idle:0; lastwait:1000].
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:674)
...并且该应用程序永远无法恢复。我正在寻找一种让 Tomcat 无需重新启动 Tomcat 即可恢复这些连接的方法。 Tomcat 肯定必须离开才能识别出这些连接已死并将它们从连接池中弹出?我相信这是 removeAbandoned="true"的意图,但它似乎在这里没有帮助。
有什么想法吗?
---更新---
在调试器中,我发现清理废弃连接的 PoolCleaner 线程卡在 JDBC4Connection(ConnectionImpl).close():1641 上。 PoolCleaner 停止并且连接没有被清理。不确定为什么 close() 超时...
最佳答案
你可能有 JDBC 连接泄漏问题,客户端没有再见,服务器端认为连接很忙,因此永远不会将繁忙的连接回收到池中。
关于mysql - Tomcat 7 JDBC 池在故障转移期间耗尽并且无法恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22461229/
我正在 Windows 10、Intel Core i7-8550U 处理器上使用 Python 3.7.4 尝试 python 多处理。 我正在使用两个函数测试多处理,一个使用基本的 sleep()
我在 Azure synapse Analytics 中使用 pyspark 代码创建了 3 个不同的笔记本。笔记本正在使用 Spark 池运行。所有 3 台笔记本都只有一个 Spark 池。当这 3
我在 Azure synapse Analytics 中使用 pyspark 代码创建了 3 个不同的笔记本。笔记本正在使用 Spark 池运行。所有 3 台笔记本都只有一个 Spark 池。当这 3
如果我在 ASP.NET 页面上创建一个新线程,则 IsThreadPoolThread 属性为 true。第一个问题是,它是来自 ASP.NET 池还是 CLR 池?第二个问题是,如果它来自 ASP
注意:这主要是关于 pg 或 Node-PostgreSQL 模块的问题。它有来自 Gatsby 和 Postgraphile 的详细信息,但我不需要这三个方面的专业知识,只需要 pg。 我有一个数据
我是一名优秀的程序员,十分优秀!