我有一个长时间运行的 Java Jetty(版本 9.2.3)应用程序,具有与 Oracle 的数据库连接。该应用程序运行良好。但是,24 小时后,我发现到 Oracle 服务器的 TCP 连接数增加了,并且大于我为 ConnectionPool 设置的 MaxLimit(在我的例子中为 4)。
$ netstat -an | grep 1234
tcp 0 0 ::ffff:10.178.120.15:60373 ::ffff:218.17.10.11:1234 ESTABLISHED
tcp 2340 0 ::ffff:10.178.120.15:78482 ::ffff:218.17.10.11:1234 ESTABLISHED
tcp 2440 0 ::ffff:10.178.120.15:88418 ::ffff:218.17.10.11:1234 ESTABLISHED
tcp 2610 0 ::ffff:10.178.120.15:58264 ::ffff:218.17.10.11:1234 ESTABLISHED
tcp 0 0 ::ffff:10.178.120.15:58288 ::ffff:218.17.10.11:1234 ESTABLISHED
tcp 0 0 ::ffff:10.178.120.15:40352 ::ffff:218.17.10.11:1234 TIME_WAIT
tcp 0 0 ::ffff:10.178.120.15:58145 ::ffff:218.17.10.11:1234 ESTABLISHED
tcp 1230 0 ::ffff:10.178.120.15:59334 ::ffff:218.17.10.11:1234 ESTABLISHED
tcp 2450 0 ::ffff:10.178.120.15:58287 ::ffff:218.17.10.11:1234 ESTABLISHED
tcp 1230 0 ::ffff:10.178.120.15:59333 ::ffff:218.17.10.11:1234 ESTABLISHED
tcp 1190 0 ::ffff:10.178.120.15:59340 ::ffff:218.17.10.11:1234 ESTABLISHED
tcp 1320 0 ::ffff:10.178.120.15:58480 ::ffff:218.17.10.11:1234 ESTABLISHED
tcp 0 0 ::ffff:10.178.120.15:40338 ::ffff:218.17.10.11:1234 ESTABLISHED
tcp 100 0 ::ffff:10.178.120.15:59382 ::ffff:218.17.10.11:1234 ESTABLISHED
tcp 0 0 ::ffff:10.178.120.15:40952 ::ffff:218.17.10.11:1234 TIME_WAIT
tcp 0 0 ::ffff:10.178.120.15:70952 ::ffff:218.17.10.11:1234 TIME_WAIT
tcp 0 0 ::ffff:10.178.120.15:60952 ::ffff:218.17.10.11:1234 TIME_WAIT
Jetty 9.2.3 中是否存在 ConnectionPool 泄漏?
最佳答案
Jetty 只是跟踪(在 JNDI 中)并返回 jdbc 支持 jar 创建和维护的 DataSource 对象。
如果存在连接泄漏,那么它完全在您正在使用的 jdbc 支持 jar 中。
查看该 jar 的更新,和/或考虑为您的数据源使用适当的连接池层。
一些可能的候选人:
- Jolbox BoneCP - http://jolbox.com/
- c3p0:JDBC - http://sourceforge.net/projects/c3p0/
- Apache DBCP - https://commons.apache.org/proper/commons-dbcp/
关于java - Jetty 9.2.3 中是否存在 JDBC ConnectionPool 泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31797520/