
池式连接超时的解决方法:
1、修改几个关键页面或访问比较频繁的数据库访问 *** 作,使用DataAdapter和DataSet来获取数据库数据,不要使用DataReader。
2、在访问数据库的页面上使用数据缓存,如果页面的数据不是经常更新(几分钟更新一次)的话,使用Cache对象可以不用访问数据库而使用缓存中的内容,那么可以大大减少连接数量。
3、修改代码,把使用Connection对象的地方都在Close()后面加上Dispose()调用。
池式连接超时的原因
系统割接后,中间件和数据库进行了防火墙隔离,由于数据库和应用都进行了割接,系统架构由原先的单一网络变成了跨系统部署,数据库和应用之间的访问通过防火墙;而防火墙这边对空闲的连接配置了超时时间(一般默认为30分钟),一旦超过时间,会自动将连接断掉。
而断掉后,应用程序这一侧的数据库连接池这边还是认为该连接有效,它只在应用获取该连接时才会进行一个有效性测试,会每间隔一个时间尝试一次,尝试n次后才确定该连接失效,发起重连,最终造成业务耗时长。
由于连接池连接数很多,势必造成有部分连接空闲时间超过了防火墙的设置,而应用程序这边没有配置对空闲连接的维护参数,空闲连接会一直认为有效,所以该现象只会出现在连接池中的空闲连接上;当应用获取已被防火墙断开的空闲连接时,就会造成应用的响应慢,或者直接提示connection timed out异常。
连接SQl Server时 出现超时时间已到,在 *** 作完成之前超时间已过或服务器未响应是设置错误造成的,解决方法为:
1、连接数据库的方法代码。
2、实现实例的全局配置的方法代码。
3、实现在 A 服务器实例执行连接服务器的查询15秒等待后报错代码如下。
4、实现在A服务器更改远程连接超时值为 5 秒在查询的代码如下。
5、确定后默认先尝试连接结果10秒报错代码如下。
6、使用该连接服务器的等待 10 秒则停止报错了效果如下。
在连接移动云云数据库Redis时,如果出现固定时间超时,可能是因为一些中间件设置了超时时间,比如nginx、haproxy等,才导致应用在固定时间不连接Redis后,连接被中间件主动断开。此时,可以选择定时连接一次Redis或者增大中间件超时时间,防止连接主动断开。同时,已实名认证的移动云用户均可参与狂欢双11,「移」价到底的特惠活动,云数据库Redis可享受首购特惠,最低2.88元/月起。了解移动云云数据库Redis更多详情,请搜索关键词“移动云云数据库Redis”,登录移动云官网进行注册。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)