问题标签 [connection-leaks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
209 浏览

java - 无法理解 SQL 异常 - Ora Err 代码:ORA-01000:

我有一个 Java 类,它调用一个 SQL 过程来执行一些数据库操作。这是我的Java方法:

经过几次处理后,它会在日志中打印以下错误并挂在那里(我必须手动终止进程才能停止执行):

我尝试了以下解决方案:

在 catch 块中添加“ throw ”后,该进程现在没有被挂起,它在打印相同的 SQL 错误后继续执行。

我希望您能帮助理解以下几点:

  1. 如何在代码中添加“throw e”,让程序即使在出错后也能继续?
  2. 如果遇到这种情况,如何处理此错误/异常以停止处理并退出程序。
0 投票
3 回答
5070 浏览

java - 启动 Spring Boot 应用程序的默认 HikariCP 连接池

我在我的 pom.xml-dependencies 中使用版本:2.1.6.RELEASE form Spring Boot。要连接到我的数据库,我在 application.properties 中添加了以下内容:

在使用以下命令检查 postgresql 中的连接数量时:

我看到每次启动应用程序时都会建立 10 个连接。他们几乎都有相同的查询:

有没有办法阻止应用程序建立那么多连接?我应该进行自己的池配置吗?我的 Java 应用程序中的哪些资源会初始化这些连接?

我唯一能想到的是,我使用 @Autowired 注释创建 EntityManager(s),EntityManager 来自:

但是我读到您应该只在使用 EntityManagerFactory 时关闭此连接。注释应该关闭连接。

如果您需要更多信息,我可以编辑我的帖子

0 投票
1 回答
779 浏览

java - HttpURLConnection 的套接字泄露

我在 Linux 上使用 OpenJDK 11,我需要确保所有使用 HttpURLConnection 完成的 Web 请求都已正确关闭,并且不保持任何文件描述符打开。

Oracle 的手册告诉在对象close上使用InputStreamAndroid 的手册告诉disconnectHttpURLConnection对象上使用。

我还设置Connection: closehttp.keepAlive避免false连接池。

这似乎适用于普通的http请求,但不适用于以non-chunked encoding发送响应的加密https请求。似乎只有 GC 会清理关闭的连接。

此示例代码:

打印此输出:

更改为 http URL 会使套接字按预期正确关闭,而无需 GC:

使用 OpenJDK 11 和 12 进行了测试。我错过了什么还是这是一个错误?

0 投票
1 回答
1078 浏览

java - java.net.HttpClient 状态为 CLOSE_WAIT 的连接泄漏

我们正在使用 openJDK11.0.6 java.net.http HTTP (HTTP1.1) 客户端从网站获取内容。经过长时间的执行,我们注意到性能下降。即使应用程序什么都不做,CPU 也会 100% 使用。我们能够确定它来自很多应用程序泄漏的套接字(CLOSE-WAIT 状态)。

这里已经有一些关于它的问题(比如这个),但是所有提交的错误都应该被修复并向后移植到 java 11.0.6。

我已经能够将该错误重现到github 上的 minalist 项目中。似乎只有当客户端从服务器收到 204 NO-CONTENT 时才会发生这种情况。

如果我们运行它:

OpenJDK 错误(已修复):

0 投票
2 回答
441 浏览

java - HikariPool 达到最大连接

我正在使用 HikariCP 运行 SQLite 数据库。我的配置如下所示:

该方法getConnection()用于从数据库中的表中获取数据。这些函数如下所示:

每次调用该函数时,PreparedStatement 的连接都会在最后关闭。但是,池大小一直在增长,直到达到最大池大小并超时。

有没有办法可以防止这种情况或强制关闭连接?

0 投票
0 回答
512 浏览

linux - Tcp连接泄漏问题

观察到系统抛出的问题 - 在正常工作几个小时后出现“打开的文件太多”。
观察到有很多tcp连接卡在“CLOSE_WAIT”状态。
须藤lsof | grep ":http (CLOSE_WAIT)" | wc -l -> 16215。
数字随着时间的推移而增加,在几个小时内它会超过允许的最大限制。

还运行了 netstat 命令 -
netstat -ant | awk '{print $6}' | sort | uniq -c | sort -n ”,输出为 -> 122 CLOSE_WAIT。

  1. 为什么 netstat 命令的输出远低于 lsof 命令。两者都返回关闭等待连接,并且应该给出大致相同的值。

  2. 一旦我知道与特定服务的连接导致了这个问题,那么我应该怎么做才能确定发生这种情况的确切代码?我浏览了用于连接服务的客户端代码,但没有看到任何连接泄漏。

0 投票
0 回答
456 浏览

java - Spring 5 WebClient Mono.subscribe 与句柄泄漏

更新:这是springboot的一个错误。https://github.com/spring-projects/spring-boot/issues/22091

我是springframe的初学者。使用 webclient 时会出现一些问题。我可以在订阅中得到想要的返回信息,但是在所有请求都返回后,文件句柄数 lsof -n |grep <javaPid> | wc -l(句柄数为2097;没有订阅只有46个,但确定目标服务器没有收到请求)大大增加,并且不能一直释放。我的代码有问题吗?感谢您的时间。

源 fd.sh 结果:

fd.sh

pom.xml

0 投票
1 回答
81 浏览

hikaricp - 与 hikari CP 的连接泄漏

我有用于 sql 语句的 jdbs 模板,并使用 hikari 连接池,经过几次调用后我出现异常,我使用了 try-with-resources,我的错误在哪里?(Servlet Container -Tomcat)

日志:

2020 年 10 月 24 日 13:46:16.633 严重 [http-nio-8080-exec-3] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() 用于 servlet [servlets.view.MessendjerViewServlet]路径 [/LabWork_war] 抛出异常 java.lang.IllegalStateException: java.sql.SQLTransientConnectionException: HikariPool-1 - 连接不可用,请求在 30014 毫秒后超时。在 repository.utill.SimpleJdbcTemplate.query(SimpleJdbcTemplate.java:52) 在 repository.jdbc.UserRepositoryImpl.findUserByUUID(UserRepositoryImpl.java:84) 在 service.UserService.findUser(UserService.java:71) 在 servlets.filter.AuthFilter。 doFilter(AuthFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache . AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1589) at org.apache.tomcat.util.net.SocketProcessorBase.run( SocketProcessorBase.java:49) 在 java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) 在 java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 在 java.base/java.lang.Thread.run(Thread.java:832) 引起:java.sql.SQLTransientConnectionException :HikariPool-1 - 连接不可用,请求在 30014 毫秒后超时。在 com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197) 的 com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695)。

0 投票
1 回答
977 浏览

spring - Spring HikariCP 的连接不会立即关闭

我正在使用 HikariCP。

如果我调用useMaeilDBService 类中的方法 3 次(MaximumPoolSize),下一次它发生超时。MaeilHikariCP - Connection is not available, request timed out after 30001ms.(更详细的错误信息在最后)

我认为连接池的所有连接都被使用了,即使我调用了 close()。如何立即将这些连接返回到连接池?

(+) 我也在方法@Transactional之外使用注释use。我在相同的过程中使用了 Spring JPA(mysql) 和 Oracle。

光数据源

服务

错误追踪

0 投票
1 回答
147 浏览

wildfly - Wildfly 检测数据库连接泄漏

我有应用程序,部署在 Wildfly 中。有时在应用程序中会发生数据库连接泄漏。我真的在调试器中找不到它们。但它们显示在数据源统计页面的 WildFly 管理控制台中,InUseCount 有时会增加。

所以,问题:

  1. 可以创建在连接创建和关闭时触​​发的处理程序吗?在全球范围内查找未关闭连接的人。
  2. 有没有连接泄漏的故障排除方法,比简单的调试更有效?