标签: connection-leaks

java.net.SocketException:没有可用的缓冲区空间(达到最大连接数?):JVM_Bind

Tomcat在Windows下运行webapp.几天之后(在非常低的负载下),标题中提到的异常开始出现在日志中,从那一点开始就无法建立新的连接,唯一的解决方法就是重启服务器.

环境:

  • 最新的Tomcat 6
  • Windows Server 2008 R2
  • JDK 6更新30
  • SQL Server 2008
  • Kerberos身份验证

到目前为止收集的证据:

  • netstat显示没有过多的连接数
  • ProcessExplorer显示没有过多的打开文件句柄
  • 系统主内存使用率是平均值
  • JVM堆使用率是平均值
  • 重启Tomcat并没有解决问题

开放式问题:

  • 如果我们泄漏连接,它们不应该出现在netstat中吗?
  • 不应该重启appserver解决问题,因为操作系统应该释放所有进程资源?
  • 有没有办法将问题追溯到其起源?例如,安装监控软件,可能类似于lsof等?

我没有想法,任何提示赞赏!

windows tomcat jvm connection-leaks socketexception

38
推荐指数
2
解决办法
7万
查看次数

如何在ASP.net应用程序中检测SqlServer连接泄漏?

我目前正在ASP.net 2.0应用程序上进行一些GUI测试.RDBMS是SQL Server 2005.主机是Win Server 2003/IIS 6.0.

我没有应用程序的源代码,因为它是由一个没有发布代码的外部公司编写的.

我注意到当我重新启动IIS时应用程序运行良好但经过一些测试后,在我打开并关闭浏览器几个小时之后,应用程序开始变得越来越慢.我想知道这种行为是否是由于程序员关闭连接错误造成的:我怀疑这里的数据库是否存在开放连接泄漏.

我想.Net垃圾收集器最终将关闭它们但是......这可能需要一段时间,不是吗?

我有SQL Server Management Studio,我从活动监视器中注意到数据库上打开了很多连接.

从以上所述,以下是与主要问题相关的一些问题:

  1. 有没有办法在SQL Server 2005中知道连接是否打开是因为它们等待在连接池中使用,或者它们是否因为应用程序使用它们而打开?

  2. somone是否知道良好的在线/纸质资源,我可以学习如何使用性能计数器或其他类型的工具来帮助追踪这类问题?

  3. 如果性能计数器是最佳解决方案,那么我应该注意哪些变量?

sql-server asp.net connection-pooling performancecounter connection-leaks

32
推荐指数
3
解决办法
3万
查看次数

为什么这段代码不关闭JDBC连接?(Java 7 Autocloseable意外行为)

使用Java 7u5和try-with-resources构造,以下代码似乎泄漏了jdbc连接:

try (Connection connection = ..; PreparedStatement stmt = ..) {
    stmt.setString(..);
    return stmt.executeUpdate() > 0;
}
Run Code Online (Sandbox Code Playgroud)

下一段代码按预期和预期工作:

int ret = 0;

try (Connection connection = ..; PreparedStatement stmt = ..) {
    stmt.setString(..);
    ret = stmt.executeUpdate();
}

return ret > 0;
Run Code Online (Sandbox Code Playgroud)

似乎在第一种情况下,该Connection.close()方法未被调用.

我正在使用最新的mysql连接器.这是出乎意料的行为,对吗?

测试

以下测试不会打印CLOSED:

public class Test implements AutoCloseable {

public static void main(String[] args) throws Exception {
    System.out.println(doTest());
}

private static boolean doTest() throws Exception {
    try (Test test …
Run Code Online (Sandbox Code Playgroud)

java jdbc connection-leaks try-with-resources

13
推荐指数
1
解决办法
3006
查看次数

在WildFly中转储泄漏连接

我试图在WildFly 10.1中转储由MySQL数据源管理的泄漏连接,但我无法找到泄漏文件或泄漏转储.

为什么leaks.txt文件没有生成?而且,我应该在哪里寻找文件?

程序

我在standalone.bat文件中注册了泄漏连接池:

"JAVA_OPTS=%JAVA_OPTS% -Dironjacamar.mcp=org.jboss.jca.core.connectionmanager.pool.mcp.LeakDumperManagedConnectionPool -Dironjacamar.leaklog=leaks.txt"
Run Code Online (Sandbox Code Playgroud)

我可以确认在WildFly中设置属性,因为日志中显示:

JAVA_OPTS: "-Dprogram.name=standalone.bat -Xms64M -Xmx512M -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Dironjacamar.mcp=org.jboss.jca.core.connectionmanager.pool.mcp.LeakDumperManagedConnectionPool -Dironjacamar.leaklog=leaks.txt"
Run Code Online (Sandbox Code Playgroud)

之后,我在模拟应用程序中泄漏了一些连接以生成数据.然后我运行CLI命令刷新所有连接获得肯定响应:

[standalone@localhost:9990 /] /subsystem=datasources/data-source=mysql-ds:flush-all-connection-in-pool
{"outcome" => "success"}
Run Code Online (Sandbox Code Playgroud)

但我无法在leaks.txt任何地方找到该文件.

我正在使用这篇文章以及IronJacamar泄漏文档作为参考.

检漏池使用ironjacamar.mcp系统属性配置,值为

org.jboss.jca.core.connectionmanager.pool.mcp.LeakDumperManagedConnectionPool

此配置适用于IronJacamar使用的所有连接池.

系统属性ironjacamar.leaklog可用于将泄漏转储到与日志记录设置分开的特殊文件中.

一个例子

-Dironjacamar.mcp=org.jboss.jca.core.connectionmanager.pool.mcp.LeakDumperManagedConnectionPool -Dironjacamar.leaklog=leaks.txt

更新

线程969369在JBoss论坛中创建,因此他们也可以帮助它.

Bug报道了JBJCA-1360.

java connection-leaks wildfly wildfly-10 ironjacamar

8
推荐指数
1
解决办法
1380
查看次数

Java,ResultSet.close(),PreparedStatement.close() - 为什么?

在我的网络应用程序中,我广泛使用数据库.

我有一个抽象的servlet,需要数据库连接的所有servlet都可以继承.该抽象servlet创建数据库连接,调用抽象方法,该方法必须由继承的servlet覆盖以执行其逻辑,然后关闭连接.我不使用连接池,因为我的应用程序将拥有非常有限的用户和操作.

我的问题是,如果我没有关闭我的继承servlet创建的ResultSets,PreparedStatements和Statements,如果Connection创建它们的s总是关闭的话,那么最糟糕的情况是什么?

java database memory-leaks connection-leaks

7
推荐指数
2
解决办法
8674
查看次数

如何跟踪数据库连接泄漏

我们有一个似乎有连接泄漏的应用程序(SQL Server表示已达到最大池大小).我独自在我的开发机器上(显然),只是通过导航应用程序,我触发了这个错误.SQL Server活动监视器使用我的数据库显示大量进程.

我想找到哪些文件打开连接但不使用它.我正在考虑使用像grep这样的东西,为每个文件计算".Open()"的数量和".Close()"的数量,并获得数字不相等的文件.这是现实的吗?

加分问题:SQL Server活动监视器中找到的进程是否与连接相对应?如果没有,我如何找出我的数据库中打开了多少个连接?

该应用程序是在asp.net(vb)3.5,与SQL Server 2005.我们目前不使用LINQ(尚未)或类似的东西.

谢谢

database sql-server memory-leaks database-connection connection-leaks

7
推荐指数
2
解决办法
5900
查看次数

由jms异常引起的Glassfish数据库连接泄漏

我正在使用Glassfish v2.1.1,MySQL 5.1和ActiveMQ 5.4.2 incl.它的资源适配器.如果ActiveMQ资源适配器在参与包括数据库和jms事务的XATransaction时抛出异常,则glassfish将包含处于回滚状态的事务,该事务不会释放与数据库连接池的数据库连接.这些事务将堆积起来并最终使数据库连接池饱和.

这里发生了什么以及如何防止这些事务在挂起到数据库连接的回滚状态中停止?

最好的问候Trym

activemq-classic database-connection transactions glassfish connection-leaks

7
推荐指数
1
解决办法
769
查看次数

如何检查Java EE应用程序中的数据库连接泄漏?

有没有办法检查Java EE应用程序中的连接泄漏?

应用程序在我的本地计算机上运行.它使用MySQL数据库,用户将其详细信息输入此数据库.

在我看来,连接泄漏意味着没有正确关闭连接对象.我在我的应用程序中创建了太多的数据库连接.我想检查数据库连接中是否存在任何连接泄漏.

java mysql jdbc connection-leaks

5
推荐指数
1
解决办法
2万
查看次数

与HttpClient的状态为CLOSE_WAIT的连接泄漏

We are using JDK11 java.net.http HTTP client to get data from an API. After we receive the response the connections remain opened in our server with TCP state CLOSE_WAIT, which means the client must close the connection.

From RFC 793 terminology:

CLOSE-WAIT - represents waiting for a connection termination request from the local user.

This is our client code which runs on WildFly 16 running on Java 12 as a stateless REST API. We don't understand why this is …

java connection-leaks java-http-client java-11

5
推荐指数
1
解决办法
971
查看次数

HttpURLConnection 的套接字被泄露

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

甲骨文手册讲述使用closeInputStreamAndroid的手册告诉编译器使用disconnect的上HttpURLConnection对象。

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

这似乎适用于普通的http请求,但不适用于其响应以非分块编码发送的加密https请求。似乎只有 GC 会清理关闭的连接。

此示例代码:

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.stream.Stream;

public class Test {
    private static int printFds() throws IOException {
        int cnt = 0;
        try (Stream<Path> paths = Files.list(new File("/proc/self/fd").toPath())) {
            for …
Run Code Online (Sandbox Code Playgroud)

java connection-leaks httpurlconnection

5
推荐指数
1
解决办法
635
查看次数