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

sql-server - SSIS 2014 和 Postgres ODBC 的连接泄漏问题

我正在为一个客户端开发一个项目,该项目涉及一个非常庞大的 ETL 过程,用于将数据从 MSSQL Server 移动到 Postgres。我们使用 SSIS 2014 和 postgresql.org 上提供的 ODBC 驱动程序,并设置了 ODBC DSN。我们只使用内置的 OLEDB 源和 ODBC 目标,并且遇到了一个我无法在其他任何地方在线找到引用的问题。

确切的问题是 SSIS 似乎为每个 ODBC 目标数据流组件打开了多个连接,即使启用了连接池。这可能会导致打开 50 多个空闲连接,这些连接在进程完成之前不会被终止。从 Visual Studio 预览数据也会导致连接泄漏,只有在重新启动 Visual Studio 时才会终止。我们已通过将最大连接数增加到 1000 来暂时解决此问题,但我们希望尽可能解决根本问题。

我已经进行了大量的实验,问题似乎与 SSIS 相关,而不是驱动程序中的错误。

有没有其他人遇到过类似的问题并知道如何解决这个问题?

编辑:认为这不会是一个大问题,但现在我意识到当 SSIS 包也从集成服务运行时 ODBC 连接正在泄漏。我通过制作一些空包并仅添加一个 ODBC 源和一个仅从 C# 脚本任务访问数据库的包来玩弄它;只有 ODBC 源/目标导致泄漏,而不是脚本组件,所以它似乎是 SSIS 中的一个错误,而不是我的脚本任务或 postgres 驱动程序:O

除了重写整个包以不使用 ODBC 源/目标(或其他一些奇怪的事情,例如使用 shell 脚本杀死所有连接)之外,任何人都知道如何解决这个问题?

0 投票
1 回答
516 浏览

jdbc - log4jdbc 不写入日志文件

我正在尝试在我的 Struts 应用程序中调试连接泄漏并设置了 log4jdbc。我能够在控制台中看到 log4jdbc 日志,但我希望将 jdbc 连接打开/关闭事件写入日志文件。下面是我的 log4j.properties 文件

请建议我的属性文件有什么问题,因为日志没有写入 connection.log 文件?

0 投票
1 回答
280 浏览

node.js - Node.js+Socket.io,建立的连接越来越多

我的 node.js+socket.io 服务器已通过 aws ec2 实例进行部署。

并且有一些网络调整配置。

我用 netstat 命令监控连接状态。

然后,发现“ESTABLISHED”连接正在稳步增加。

如何检测异常连接并断开连接?

如果已建立的状态连接超过 4000,则客户端无法连接到服务器。

我该如何解决?帮我。

0 投票
2 回答
2994 浏览

java - Undertow on Spring 泄漏连接

我正在使用带有 Undertow 的 Spring Boot (1.3.O.M5)。最近,我发现当我使用

几个小时后的命令,它向我显示了大约 700 行,其中大部分是与客户端建立的 TCP 连接,尽管最近一个小时内几乎没有人进入该页面(当我连接到该站点时,我的连接在大约5分钟)。

这很可能是我的 java.net.SocketException: Too many open files 的来源——我每隔几天就会收到一次(要求我重新启动应用程序),然后才注意到过时的连接。我增加了系统中的最大打开文件限制,但这显然是一个短期的解决方案。

我将不胜感激有关此问题的帮助。谢谢!

0 投票
0 回答
1121 浏览

sql-server - SQL Azure 请求限制和可能的连接泄漏

我有一个有趣的问题正在发生。我最近为一个客户端将 2 个 SQL 数据库迁移到了 SQL Azure,一切似乎都进展顺利……起初。中午时分,我收到了大量关于各种事情的错误电子邮件,但有一些是常见的:

- 数据库的请求限制为 90 并且已达到。
- 超时过期。在操作完成之前超时时间已过或服务器没有响应。
- 从服务器接收结果时发生传输级错误。

显然,迁移到 Azure 或现有代码时会出现一些与数据库相关的问题。似乎发生最多的错误是请求限制和超时。一旦他们开始,他们似乎从未停止过。而且我认为今天使用该网站的用户并不多。如果这有意义的话,似乎连接会继续尝试在后台连接不同的线程。这是参考“在操作完成或服务器没有响应之前的超时时间”。我会收到一封错误电子邮件,我会检查它自己引用的页面,它会立即加载。我与抛出错误的用户进行了核对,他们报告一切都很好。奇怪的。然而,我每隔几分钟就会继续收到相同的错误电子邮件。

我目前将它们放在 S1 层上,这将请求同时限制为 90 个。我做了一些挖掘,发现了以下 SQL 查询:

我运行了这个,它显示我有超过 90 个活动连接,其中一些是前一段时间打开的。这对我来说很奇怪,因为该网站目前没有被使用(现在已经很晚了,我知道没有人在使用该网站)。我想结束所有连接,所以我想出了以下查询:

我尝试运行此命令,但连接立即恢复。我在 Web 服务器上手动停止了 IIS 中的站点,再次运行 KILL 命令,但连接仍然存在。我建立了 app_offline 文件并将站点关闭了大约半小时,以查看是否有任何挥之不去的连接会断开,但它们没有。我仍然继续收到关于我知道无法访问的页面的错误电子邮件,因为我停止了站点和应用程序池。我在服务器上手动停止 w3wp 进程并运行 SQL KILL 语句来终止连接。他们终于走了!我将应用程序重新上线并点击了一个页面。我一直运行上述查询以查看活动连接,并且每次运行查询时,活动连接数都在不断增加。截至目前,它在 102 点左右停止。然后' 让我作为用户点击单个页面。我猜这不正常?这是否表明连接在那里徘徊并且没有被丢弃或关闭?

我刚刚更改了代码,最近添加了实体框架。无论我在哪里通过 EF 获取数据,我都会在上下文中使用 using 语句。该应用程序的其余部分有点旧,并且正在使用 TableAdapters。我在某些地方看到它与 using 语句遵循相同的模式,而在其他地方则调用 Dispose。我还没有机会追踪所有的用法。这是一个开始寻找的好地方吗?有人对如何追踪这种“泄漏”有任何建议吗?我对 SQL 不是很了解,所以任何帮助都将不胜感激!

0 投票
0 回答
662 浏览

java - 使用 byteStream 时 OkHttpClient 泄漏连接

我的 Logcat 消息中不断收到连接泄漏警告,即使我已经关闭了我发出的每个请求的每个正文。

我有两个用于 GET 和 POST 请求的包装器方法,它们启动请求并传回响应。

我有第三种方法,它InputStream通过body().byteStream()像这样读取响应来处理将响应主体转换为字符串。

每个单独的getRequest()postRequest()我调用的方法都跟随着该getResponseBodyAsString()方法,如果用户在请求之间注销,则主体也将关闭。但是我仍然收到连接泄漏警告..

如果您需要任何其他代码,请随时询问。

提前谢谢。

编辑

另一个代码块,不知道是否会有所帮助。每个调用getRequest()postRequest()封装在ASyncTask捕获任何异常的对象中的单个对象。

现在,没有什么可以关闭body()这些响应的,但是,在零情况下,当我看到泄漏警告时,会被ASyncTask取消。所以不能有任何异常阻止它被关闭。

编辑2

阅读这篇文章后,我意识到如果您手动添加“Accept-Encoding...gzip”标头,GZIP 不是透明处理的。删除手动添加确实可以透明地对其进行解码,但是,我在响应正文中只得到了一行文档。

GZIP 透明处理

<td align="center"><img width="208" height="110" src="images/alert_loginlogo.gif" /></td

从字面上看,这就是我得到的全部。如果我自己处理解码流,我可以毫无问题地获得整个文档。

这可能是图书馆中的一个错误,我在这里不知所措。

0 投票
1 回答
604 浏览

oracle - Oracle UCP 池泄漏游标?

我们的应用程序已经成功使用 OracleDataSource 好几年了,我们现在正在评估切换到新的 Oracle 通用连接池 (UCP)。

使用新的 UCP 池,我们的应用程序会遇到 ORA-0100:一段时间后打开的最大游标数。

有些人似乎遇到过类似的问题:

是否有任何已知的解决方法/修复?

注意:我们会正确关闭会话和语句,并遵循所有已知的 JDBC/Hibernate 最佳实践。该应用程序 24/7 运行,数据访问层代码已超过 8 年,并且已经过详尽的测试。我们正在使用 Oracle 12c。

0 投票
0 回答
60 浏览

spring-data - 从spring事务方法调用静态方法时的连接泄漏问题

我在服务层有一个事务方法,它调用一个静态方法,我正在为一些异步任务启动一个线程(再次是一些数据库操作)。从事务范围调用静态方法会导致一些数据库连接泄漏问题吗?

下面是解释用例的示例代码。

AsyncTasker.java

0 投票
1 回答
1261 浏览

java - 如何在 Java 中识别监视器锁的所有者

我们使用 WildFly 8.2.1 和 Java 1.8_92 运行的 Java 应用程序在巨大的负载下完全挂起。在这种情况下的线程转储显示许多线程在监视器 0x00000005cc562228 处处于 WAITING 状态:

因为我们假设这个线程是某些连接泄漏的原因,我们如何找到这个监视器锁的所有者?我们假设此监视器锁出现在另一个上下文中,但事实并非如此。

或者对于僵局情况可能有任何其他提示?非常感谢任何帮助,因为我们在这个问题上挣扎了很长时间。

0 投票
1 回答
4318 浏览

sql-server-2012 - 连接不会返回到池中(JBoss EAP 6 AND SQL Server 2012)

我有一个在 jboss eap 6.3 下运行并通过 jTDS 驱动程序连接到 SQL SERVER 2012 数据源的应用程序。问题是连接被打开并且永远不会返回到池中。

起初,没有连接泄漏。我已经使用下面的配置配置了 jboss 来调查这个问题:

Jboss 发现了一个连接泄漏(在一个语句中)并且我修复了它,但问题仍然存在。

数据库配置如下:

在生产一天后,jboss-cli 的统计显示如下数据:

在此处输入图像描述

“使用中”分数始终与“活动计数”大小相同。这个数字对我来说没有意义,因为对于每个请求,我们只打开和关闭一个连接,并且在打印时,有 98 个会话连接到 jboss。

调查此应用程序的 SQL Server 进程 (master.dbo.sysprocesses) 所有“活动计数”连接都处于“等待命令”状态并详细说明为“睡眠”

我 100% 确定所有打开的连接也在应用程序中关闭。

大约 2 天后,池 100 % 完成,需要重新启动服务器

什么可能导致这种行为?“活动计数”的值不应该是 200 吗?哪些可能会阻止连接返回池?