Sql Server 2008 连接超时

Sql Server 2008 连接超时,第1张

开发环境是用SqlServer 2008 , jdbc版本是jtds 12发布到测试环境的时候,出现连接超时的问题

测试环境配置如下:

tomcat 625

sqlserver jdbc4

阿里云rds sql server 2008 sp2

你指的是JDBC连接池连接超时失效问题的问题吧?

这是因为mysql默认保持连接的时间是8小时,如果这个连接在8小时内无人访问的话,就会关闭这个连接。但是连接池设计的时候没有考虑到这个问题,还把失效的连接拿出去就会导致出现异常。

解决方法:

1、创建一个线程每隔一段时间就测试一下连接,保持连接时最新的,永远达不到8小时无人访问。

2、连接池取连接的时候判定是否这个连接有效。

[java] view plain copy

if (connisValid(1000)){

return conn;

}

else{

return thisCreateConnection();

}

3、不使用连接池,直接拿了就用,用了就还。

连接池的概念:

用池来管理Connection,这可以重复使用Connection。有了池,所以我们就不用自己来创建Connection,而是通过池来获取Connection对象。当使用完Connection后,调用Connection的close()方法也不会真的关闭Connection,而是把Connection“归还”给池。池就可以再利用这个Connection对象了。

JDBC数据库连接池接口(DataSource):

Java为数据库连接池提供了公共的接口:javaxsqlDataSource,各个厂商可以让自己的连接池实现这个接口。这样应用程序可以方便的切换不同厂商的连接池!

与具体数据库管理系统种类有关。通常考虑以下因素:

1 防火墙是否拦截了相应端口,如SQL Server的1433、MySQL的3306、Oracle的5021、DB2的50000等,据本人经验,使用数据库时尽量不要用360监控;

2 如果是JDBC,相应的驱动程序是否已经放到了项目中,版本是否正确;

3 如果是ODBC,是否驱动损坏(可以用Windows系统盘修复)

Druid连接池及监控在Spring配置如下:

[html] view plaincopy

<bean id="dataSource" class="comalibabadruidpoolDruidDataSource" init-method="init" destroy-method="close">

<!-- 基本属性 url、user、password -->

<property name="url" value="${jdbc_url}" />

<property name="username" value="${jdbc_user}" />

<property name="password" value="${jdbc_password}" />

<!-- 配置初始化大小、最小、最大 -->

<property name="initialSize" value="1" />

<property name="minIdle" value="1" />

<property name="maxActive" value="20" />

<!-- 配置获取连接等待超时的时间 -->

<property name="maxWait" value="60000" />

<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->

<property name="timeBetweenEvictionRunsMillis" value="60000" />

<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->

<property name="minEvictableIdleTimeMillis" value="300000" />

<property name="validationQuery" value="SELECT 'x'" />

<property name="testWhileIdle" value="true" />

<property name="testOnBorrow" value="false" />

<property name="testOnReturn" value="false" />

<!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->

<property name="poolPreparedStatements" value="true" />

<property name="maxPoolPreparedStatementPerConnectionSize" value="20" />

<!-- 配置监控统计拦截的filters,去掉后监控界面sql无法统计 -->

<property name="filters" value="stat" />

</bean>

2 只要配置initialSize,maxActive就可以,目前这样的配置已经能够使用连接池,加入其实配置性能不好,官方文档里也不没加其它属性,连接池jar包免费下载。

数据库连接数的,所有的连接数都是有连接池管理的,有时候连不上有时候连不上是因为连接池有时候满了,有的时候没有满,可以提供连接数,连接池可以理解为线程池,是需要释放的,所以java中关于jdbc配置会配置超时时间

以上就是关于Sql Server 2008 连接超时全部的内容,包括:Sql Server 2008 连接超时、JDBC连接池的问题。 请问在什么情况下,会出现这种问题啊 找了好久,找不到原因......、数据库连接建立失败原因等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10174238.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存