问题标签 [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 回答
880 浏览

java - 注入的 JOOQ 上下文泄漏连接

我使用 jooq 在 Wildfly Web 应用程序中处理 PostgreSQL 数据库上的 SQL 查询。按照http://awolski.com/integrating-jooq-easy/上的示例,通过 CDI 将 DSLContext 注入到我的 bean 中。一个 bean 看起来像这样:

当我运行应用程序时,每个连接都会泄漏。我错过了什么?

0 投票
0 回答
1349 浏览

java - okhttp客户端抛出连接泄漏警告

我看到response.body()未关闭时会引发连接泄漏警告。

下面是引发警告的代码片段。

有人可以指出错误可能在哪里以及代码中的任何潜在错误吗?

设置日志级别为FINE后的错误日志如下:

0 投票
1 回答
3395 浏览

postgresql - 在 Spring Boot 中 jdbcTemplate 连接泄漏到 postgresql db

看来我的服务存在数据库连接泄漏。昨天重新部署后,我提到有 27 个打开的与 postgres 数据库的连接。今天早上他们60岁了。

对我的数据库执行此查询,我看到某些连接的最后使用时间只是昨天。

在此处输入图像描述

似乎我的 jdbcTemplate 应该关闭它们,但它没有这样做。

这是我的配置

任何想法我的配置有什么问题?或者也许这是错误的数据库配置。

0 投票
0 回答
207 浏览

javascript - 我可以使用 JS 获取客户端 DNS IP 地址吗?

我正在寻找一个获取用户 DNS 服务器 IP 的 JS。

就像:dnsleak.com、ipleak.net

但是,我知道这些是可以使用的在线服务,但我想要可以在我的服务器上运行的东西,并且谁访问过它,我会得到他/她的 DNS 服务器 IP。

谢谢你。

0 投票
0 回答
599 浏览

jetty - Jetty 9 泄漏线程和连接并停止响应

我们使用 Jetty 9 作为 Java 8 VM 中的嵌入式 Web 服务器。有时,会发生以下情况:

  1. (Windows) 进程的线程数开始以稳定的速度增加
  2. 此后一段时间,Jetty 停止响应 HTTP (TLS) 请求。
  3. 在此之后,线程仍会增加一段时间,然后在 300 左右停止增加(进程中大约有 100 个非码头线程)。
  4. 在响应停止的同时,类似以下的消息序列开始精确地每 2 分钟重复记录一次,并且永不停止:

    2018-09-22 00:00:47 调试 [Scheduler-7519289] org.eclipse.jetty.io.IdleTimeout:156 - SelectChannelEndPoint@be1c72{/192.168.37.61:12421<->444,打开,输入,输出,- ,-,120001/120000,SslConnection@16ad018}{io=0/0,kio=0,kro=1} 空闲超时检查,经过:120001 ms,剩余:-1 ms

    2018-09-22 00:00:47 调试 [Scheduler-7519289] org.eclipse.jetty.io.IdleTimeout:163 - SelectChannelEndPoint@be1c72{/192.168.37.61:12421<->444,打开,输入,输出,- ,-,120002/120000,SslConnection@16ad018}{io=0/0,kio=0,kro=1} 空闲超时过期

    2018-09-22 00:00:47 调试 [Scheduler-7519289] org.eclipse.jetty.io.WriteFlusher:473 - 忽略:WriteFlusher@2527cb{IDLE} {}

    2018-09-22 00:00:47 调试 [Scheduler-7519289] org.eclipse.jetty.io.AbstractEndPoint:186 - 忽略空闲端点 SelectChannelEndPoint@be1c72{/192.168.37.61:12421<->444,Open,in, out,-,-,120004/120000,SslConnection@16ad018}{io=0/0,kio=0,kro=1}

    ...

    2018-09-22 00:02:47 调试 [Scheduler-7519289] org.eclipse.jetty.io.IdleTimeout:156 - SelectChannelEndPoint@be1c72{/192.168.37.61:12421<->444,打开,输入,输出,- ,-,120002/120000,SslConnection@16ad018}{io=0/0,kio=0,kro=1} 空闲超时检查,经过:120002 ms,剩余:-2 ms

    2018-09-22 00:02:47 调试 [Scheduler-7519289] org.eclipse.jetty.io.IdleTimeout:163 - SelectChannelEndPoint@be1c72{/192.168.37.61:12421<->444,打开,输入,输出,- ,-,120002/120000,SslConnection@16ad018}{io=0/0,kio=0,kro=1} 空闲超时过期

    2018-09-22 00:02:47 调试 [Scheduler-7519289] org.eclipse.jetty.io.WriteFlusher:473 - 忽略:WriteFlusher@2527cb{IDLE} {}

    2018-09-22 00:02:47 调试 [Scheduler-7519289] org.eclipse.jetty.io.AbstractEndPoint:186 - 忽略空闲端点 SelectChannelEndPoint@be1c72{/192.168.37.61:12421<->444,打开,在, out,-,-,120003/120000,SslConnection@16ad018}{io=0/0,kio=0,kro=1}

为大约 200 个唯一的 SelectChannelEndPoint 对象(还有大约 200 个唯一的客户端 IP:端口组合)记录了像上面这样的序列。

版本:9.3.22 和 9.3.25。这些是 TLS 连接。

我们不会更改默认线程池大小。

似乎空闲连接的清理有一个错误,有时会出现 - 而不是从一开始 - 在上述问题序列开始之前,有许多一次性清除空闲连接。

请帮忙!这是一个已知的错误(我在互联网上找不到任何东西)?

还有哪些其他诊断信息可以帮助查明问题?

0 投票
1 回答
1602 浏览

java - 使用HttpClient时如何完全释放连接?

我使用 HttpClient ( https://hc.apache.org/httpcomponents-client-4.5.x/index.html ) 来进行许多背靠背和并行的 http 调用。运行一段时间后,它得到这个异常:

我试图关闭我能看到的所有东西,但我仍然必须错过一些东西,因为它仍然有那个错误。

如何正确释放连接以避免这种连接泄漏问题?

这是重现该问题的测试用例,在 Windows 上以 Java8 运行:

0 投票
1 回答
171 浏览

jdbc - clojure 中的 jdbc 连接被过早地收集垃圾

我正在使用该[com.impossibl.pgjdbc-ng/pgjdbc-ng "0.7.1"]库连接到 postgres 数据库。连接保存在原子内。然后我像这样武装多个听众:

f在这种情况下是事件触发时调用的函数。出于某种原因,连接似乎被垃圾收集了不久,这显然使侦听器无法正常工作。

此警告之后是我在arm-listeners方法中打开连接的堆栈跟踪。

我尝试了几件事,例如将连接存储在 a 中let,但似乎都没有帮助解决这个特定问题。

建立连接并启动我使用的侦听器的完整功能是:https ://github.com/n2o/postgres-listener/blob/master/src/postgres_listener/core.clj

这就是我启动监听器的方式:

0 投票
2 回答
8655 浏览

java - 使用 HttpClient 以状态 CLOSE_WAIT 泄漏的连接

我们正在使用 JDK11 java.net.httpHTTP 客户端从 API 获取数据。在我们收到响应后,连接在我们的服务器中仍然以 TCP 状态打开CLOSE_WAIT,这意味着客户端必须关闭连接。

来自RFC 793术语:

CLOSE-WAIT - 表示等待来自本地用户的连接终止请求。

这是我们的客户端代码,它在 WildFly 16 上运行,在 Java 12 上作为无状态 REST API 运行。我们不明白为什么会这样。

我们得到“状态码”,表示 http 响应已处理。

当使用相同的代码调用其他端点时,连接很好。这似乎是我们正在调用的远程 API 的一个特殊问题,但我们仍然不明白为什么 Java HTTP 客户端保持连接打开。

我们尝试了 Windows 和 Linux 机器,甚至尝试了 WildfFly 之外的独立机器,但结果相同。在每次请求之后,即使是从我们的无状态客户端执行并接收响应,每个请求都将保持不变CLOSE_WAIT并且永远不会关闭。

如果我们关闭 Java 进程,连接将消失。

在此处输入图像描述

HTTP 客户端发送的标头:

服务器返回带有标题的响应:Connection: close

更新 (1)

我们尝试微调实现类中的池参数jdk.internal.net.http.ConnectionPool

它没有解决问题。

更新 (2)

使用Apache HTTP时,连接会处于 CLOSE_WAIT 状态大约 90 秒,但在那之后它可以连接。

调用方法HttpGet.releaseConnection()强制连接立即关闭。

并且使用OkHttp客户端,它可以按预期开箱即用,没有连接卡住。

我们仍在努力寻找如何让它在 java-http-client 中工作,这样我们就不必重写代码。

0 投票
0 回答
158 浏览

connection-pooling - 检测池化数据源中的连接泄漏

我正在编写代码以检测我的应用程序是否正在泄漏连接。我c3p0用作连接池。

在我的单元测试中,我试图创建一个@Rule在测试结束时检查没有挂起的连接。这将帮助我找到忘记关闭Connections 的代码。目前,这必须与 c3p0 池一起使用。

我写了以下代码:

但是,当将组件实例化为@Rule 时,它​​会随机检测一个挂起的连接(在我当前的测试中,我只使用一个)。

有些测试会挂起连接,有些则不会。如果我单独运行一个失败的测试,我通常不会再收到任何投诉。

我认为该getNumBusyConnectionsDefaultUser()方法没有达到我想要的效果。

有人帮忙吗?

0 投票
1 回答
307 浏览

java - Hive JDBC - getConnection 失败时的连接泄漏

我正在使用 cloudera hive jdbc https://www.cloudera.com/downloads/connectors/hive/jdbc/2-6-2.html

有时,当 getConnection() 调用失败(并非总是如此,取决于服务器稳定性)时,它会显示此异常:

当我使用 netstat cmd 检查时:

建立了一个新的套接字连接,我必须等待大约 1 小时然后才能看到 tcp 连接消失了。

问题是:

  1. 为什么当我调用 getConnection() 时,会调用 closeSession()?
  2. 是不是因为closeSession()失败,导致tcp连接无法释放?是否视为连接泄漏?