当前位置: 首页 > 知识库问答 >
问题:

SQL Server连接处理、连接池、生存期和泄漏连接

束阳旭
2023-03-14

我正在尝试识别应用程序中的SQL连接泄漏。经过一些操作后,当我的应用程序处于空闲状态(用户未执行任何活动)时,我在sp_who2返回的结果集中看到7个与我的数据库的连接。所有连接的状态均为Hibernate,所有连接的命令值均为等待命令

我正在使用连接池,但连接字符串中未指定连接生存期。这意味着如果我是对的,将使用它的默认值0。连接生存期的值为零意味着SQL server永远不应该关闭连接,对吗?

我让我的应用程序空闲一段时间(15-20分钟),然后我看到sp_who2没有显示与我的数据库的任何连接。我想知道为什么当连接寿命为零时会得到这个结果。SQL服务器是否会在一段时间后终止未使用的连接,而不管连接生存期值如何?

如何识别哪个连接因泄漏而打开,哪个连接因连池而挂在那里?

我的应用程序支持SQL服务器2008,2014和2016。这是ASP. NEt应用程序。

共有1个答案

能远
2023-03-14

连接生存期的值为零意味着SQL server永远不应该关闭连接,对吗?

没有。用于清除池的规则没有很好的文档AFAIK,但是它们可以被池程序关闭。参考https://msdn.microsoft.com/en-us/library/8xx3tyca(v=vs.110). aspx?F=255

我不认为有一个可靠的/文档化的方法来从数据库引擎中识别池连接。

 类似资料:
  • 我正在开发一个在Java服务器上运行的游戏。对于数据库池,我使用的是HikariCP,这是一个优秀的库,但它现在抛出了以下错误: 现在我知道连接泄漏意味着打开的连接在某个地方漂浮,但我不知道如何或在哪里漂浮。 下面是我的数据库类中的一个方法,根据堆栈跟踪,错误应该发生在这里。 这只是启动语句的一个基本方法。调用它时,我使用它,然后调用、和 但它告诉我连接是打开的。 我怎么解决这个?谢了!

  • 我正在运行一个Spring boot Java应用程序,使用默认的HikariCP作为数据源: Hikari版本-3.4.5 在AWS EKS中运行的Spring Boot version-2.4.5 JDBI版本-3.9.1 DB-AWS RDS Postgres 我的Spring应用程序变得没有响应,因为它失去了Hikari池中的所有连接。这并不是确定地发生,但是一旦它开始发生,唯一可能的恢复

  • 我有一个tomcat服务器并使用jedis客户端连接到它。 我使用的绝地版本是“3.0.0-m1”和tomcat 8.0.15 连接后,几个小时后,我看到以下例外情况。有什么帮助吗?

  • 我有一个带有和对象的。每次调用,我都会执行以下操作: 我不关闭,因为没有关闭方法。每次调用servlet时,mongo中使用的连接数都会增加: 什么是与mongo和morphia建立联系的正确方式?这种联系到底在哪里?谢谢

  • 我正在Scala应用程序中使用Apache Http客户端。 该应用程序具有相当高的吞吐量和高并行性。 我不确定,但我想我可能是在泄露连接。似乎每当使用客户机的代码部分变得繁忙时,应用程序就会失去响应。我的怀疑是,我正在泄漏套接字或其他东西,从而导致应用程序的其他方面停止工作。与其说是连接泄漏,还不如说是关闭速度不够快。 对于更多上下文,有时,某些操作会导致此代码每分钟并行执行数百次。当这种情况发

  • 我在webapp(hibernate-core-4.3.8。Final和Spring 3.2.11。RELEASE)上使用Spring和hibernate。我使用hikaricp(v 2.2.5)作为连接池impl,它检测连接泄漏并打印下面的stacktrac。我使用Spring的声明性事务划分,因此我假设资源的管理和清理是由Spring/hibernate完成的。因此,我认为Spring或hib