Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQL Server中的休眠连接_Java_Sql Server_Connection_Jdbctemplate_Apache Commons Dbcp - Fatal编程技术网

Java SQL Server中的休眠连接

Java SQL Server中的休眠连接,java,sql-server,connection,jdbctemplate,apache-commons-dbcp,Java,Sql Server,Connection,Jdbctemplate,Apache Commons Dbcp,我不是一名数据库管理员(更不是一名MS数据库管理员),我收到了一些投诉,说我写的一段代码在数据库中留下了“休眠连接” 我的代码是Java,使用Apache Commons DBCP进行连接池。我还使用Spring的JdbcTemplate来管理连接的状态,因此不关闭连接是不可能的(因为库是为我这样做的) 我的主要问题是,从DBA的角度来看,这些连接会导致停机或性能差吗 是相关的,当前设置保持原样(池中有无限个活动/空闲连接)。Apache DBCP将maxIdle连接设置设置设为8,将maxAc

我不是一名数据库管理员(更不是一名MS数据库管理员),我收到了一些投诉,说我写的一段代码在数据库中留下了“休眠连接”

我的代码是Java,使用Apache Commons DBCP进行连接池。我还使用Spring的
JdbcTemplate
来管理连接的状态,因此不关闭连接是不可能的(因为库是为我这样做的)

我的主要问题是,从DBA的角度来看,这些连接会导致停机或性能差吗


是相关的,当前设置保持原样(池中有无限个活动/空闲连接)。

Apache DBCP将
maxIdle
连接设置设置设为8,将
maxActive
设置设为8。这意味着池中可以存在8个活动连接和8个空闲连接。DBCP在调用连接时重用连接。您可以根据自己的要求进行设置。您可以参考以下文档:


事实上,为了回答您的问题,了解一下这些“睡眠”连接的数量会很好。该服务器的主要用途是为您的应用程序服务,还是您的应用程序是众多应用程序之一,这也很重要。同样重要的是你的应用程序是否有多个实例(例如在多个web服务器上),或者它是否只是一个实例

根据我的经验,现代硬件上的空闲连接几乎没有相关的开销,只要你没有达到数百个。也就是说,看看你前面的问题,允许池产生无限数量的连接听起来并不明智——我建议设置一个上限,即使你将其设置为数百

我至少可以从一个连接池泄漏的痛苦情形中告诉您,即使连接池处于空闲状态,拥有一千个到单个SQL server的打开连接也是昂贵的。我似乎记得服务器在接近2000连接范围时开始丢失它(无法接受新连接、简单查询超时等)(几年前这是中端硬件上的SQL 2000)


希望这有帮助

当我问上一个问题:)时,我了解到,我感兴趣的是,这些“休眠”连接是否会影响SQL Server的性能。@Alex-通常在实时系统中,连接数是根据使用要求分配的。对于具有250个实时用户的应用程序,我们最多提供30个连接。如果有更多的应用程序访问同一个数据库,最好根据每个应用程序需要的连接数进行分配。很明显,并发活动连接的数量将影响数据库服务器,还取决于系统的资源(RAM、CPU)。